home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- # This is a shell archive, meaning:
- # 1. Remove everything above the #! /bin/sh line.
- # 2. Save the resulting text in a file.
- # 3. Execute the file with /bin/sh (not csh) to create:
- # Imakefile
- # Makefile
- # NOTES
- # README
- # TODO
- # blackstone.bm
- # blackstonemask.bm
- # gosh.c
- # gosh.h
- # gray.bm
- # whitestone.bm
- # whitestonemask.bm
- # xgosh
- # xgosh.bm
- # xgosh.c
- # xgosh_title.bm
- # This archive created: Tue Sep 10 16:19:14 1991
- export PATH; PATH=/bin:/usr/bin:$PATH
- if test -f 'Imakefile'
- then
- echo shar: "will not over-write existing file 'Imakefile'"
- else
- cat << \SHAR_EOF > 'Imakefile'
- #
- # xgosh
- # by Scott W. Hassan
- #
-
- LOCAL_LIBRARIES = $(XTOOLLIB) $(XMULIB) $(XLIB)
- SYS_LIBRARIES = -lm
-
- SRCS = xgosh.c gosh.c
- OBJS = xgosh.o gosh.o
-
- ComplexProgramTarget(xgosh)
- SHAR_EOF
- fi
- if test -f 'Makefile'
- then
- echo shar: "will not over-write existing file 'Makefile'"
- else
- cat << \SHAR_EOF > 'Makefile'
- #
- # xgosh
- # by Scott W. Hassan
- #
-
- xgosh : xgosh.o gosh.o
- cc -o xgosh xgosh.o gosh.o -lXt -lXmu -lX11 -lm
- xgosh.o : xgosh.c gosh.c
- cc -c xgosh.c
- gosh.o : gosh.c gosh.h
- cc -c gosh.c
- clean:
- rm -f *.o xgosh
- shar:
- rm -f *.o xgosh; shar * > ../xgosh.sh
-
-
- SHAR_EOF
- fi
- if test -f 'NOTES'
- then
- echo shar: "will not over-write existing file 'NOTES'"
- else
- cat << \SHAR_EOF > 'NOTES'
-
- HISTORY:
-
- *****************************************************************************
-
- xnetgo
- January 1, 1991: Version 1.0
- superseded by xgosh (below)
-
- *****************************************************************************
-
-
- *****************************************************************************
-
- xgosh
- January 5, 1991: Verson 1.2
-
- New features:
- - Last move cross marker added.
- - command line geometry control added.
- - automatic loading of loadfile at startup.
- - icon bitmap added.
- - glint added on stones.
- - if color display is detected, then it
- will try to use a colored board.
-
- Bugs fixed:
- - Loading segmentation fault fixed.
- - board resizing problems fixed.
- - mouse cursor shape icons fixed (hopefully.)
- - DEC Window compatiblity (haven't tested but I think it works, now).
- - Added a usleep command to slow down the display server loop.
-
- *****************************************************************************
-
- xgosh
- March 8, 1991: Version 1.5.2
-
- *****************************************************************************
-
- New Features:
-
- - better organized structured programming
- - dual clocks
- - gray stipple pattern for board
- - various sizes of boards up to 50x50.
- - 1xn Go works!
- - new improved saving and loading works.
- - new improved undo feature.
- - blinking cross
- - single display option
- - more general handicap features.
- - KO rule checking
- - more messages.
- - version display at start of execution.
- - resizes correctly keeping with a correct ratio of the board size.
- - title screen window
- - the split of the info window from the board window.
- - kill mode and scoring courtesy of Namhoon Yo.
-
- Bugs fixed:
- - handicap loading and saving fixed.
- - KO handling fixed.
- - initial turn loading fixed.
-
- *****************************************************************************
-
- xgosh
- April 10, 1991: Version 1.7
- Modified by Eric Osman (osman@hannah.enet.dec.com)
-
- *****************************************************************************
-
- - Use X toolkit instead of "select" so it works on both
- VMS as well as u*ix.
-
- *****************************************************************************
-
-
-
-
-
-
- SHAR_EOF
- fi
- if test -f 'README'
- then
- echo shar: "will not over-write existing file 'README'"
- else
- cat << \SHAR_EOF > 'README'
- *****************************************************************************
-
- XGOSH
-
- Scott W. Hassan
-
- Version 1.7
-
- April 10, 1991
-
- Modified by Eric Osman
- and Namhoon Yo.
-
- *****************************************************************************
-
- xgosh is a quick and easy game of Go. It allows two people to play a
- game of Go easily over the network. It uses the X Windows' feature of
- opening two displays (One for each player.)
-
- NOTE: Only one xgosh program runs per game. It serves both displays at
- the same time. This is unlike the older netgo programs when both players
- had to have a copy of the program and meet at a port. X Windows handles
- all of this busy work.
-
- usage: xgosh [-options ...]
-
- where options include:
- -whitedisplay dpy X server on which to display white player.
- will default to the current DISPLAY variable.
- -blackdisplay dpy X server on which to display black player.
- will default to the current DISPLAY variable.
- -whitegeometry WxH+X+Y size and location of white player's window.
- Defaults to 350x350.
- -blackgeometry WxH+X+Y size and location of black player's window.
- Defaults to 350x350.
- -handicap number number of black handicap stones.
- Default to zero.
- -loadfile filename filename to load in.
- Defaults to "xgosh.save"
- -savefile filename filename to save under.
- Defaults to "xgosh.save"
- -blacktime seconds Amount of time alotted for all black moves.
- Defaults to 1800 seconds (half hour)
- -whitetime seconds Amount of time alotted for all white moves.
- Defaults to 1800 seconds (half hour)
- -graystipple Use a gray background for the board color.
- -size w h Sets the size of the game board.
- Defaults to 19 19.
- Try playing 1 5 go, etc.
- -beep Sounds a beep after every move.
- -singledisplay Play a game using only one display.
- -usage The parameter descriptions.
-
- THE GAME:
-
- When activated, the game will display two windows, one on the
- whitedisplay and the other on the blackdisplay. These are the
- title windows that are used to confirm the starting conditions
- of the game. Both players should click on their window and
- the two game boards will appear afterwards.
-
- In the information window that appears, there will be two
- stones in the upper left hand corner of
- each window (one white and the other black.) A box will
- surround one of the stones indicating whose move it is.
-
- Below these two stones is a message: "Captured Stones: Black(0)
- White(0)." These record the number of captured stones of each
- color.
-
- When the game begins the handicap stones will automatically
- appear. One of these days, I will allow the players to place the
- stones themselves.
-
- PLAYING THE GAME:
-
- Play will start as soon as the game is executed. The first player's
- clock will start clicking away immediately. The short hand is
- for minutes and the longer hand is for seconds. I have not
- actually tested the accuracy of these clocks yet (please someone
- do it for me!)
-
- To place a move, position the mouse over an intersection and
- press the left mouse button. A stone will be drawn in its
- place. The turn will then revert to the other player and his
- clock will start ticking.
-
- A small blinking cross is left on the last piece played. This is
- very helpful for figuring out where your opponent played
- last.
-
- To pass a turn, press the p key.
- To undo a move, press the u key.
- To quit the game, press the q key.
- To load a game, press the l key.
- To save the game, press the s key.
- To enter the kill mode, press the k key. This will allow
- for any side to destroy whole groups by clicking on
- one of the stones of the group. Press the k key again to
- resume the game.
- To calculate the score of the board at any time during the
- game, press c. The algorithm assumes that all dead stones
- are removed from the board prior to scoring.
-
- Loading and Saving of games:
-
- I have to admit the saving and loading functions are pretty
- primitive.
-
- To Load a game:
-
- The strategy is to specify the filename at the command line
- using the -loadfile argument. When the game is started,
- the file will automatically be loaded and play then
- commences.
- At any point during the game, press 'l' and the game
- will be re-loaded.
-
- To Save a game:
-
- Any time during a game, press 's' and the game will be
- saved.
-
- Afterword:
-
- I hope you will like this program.
-
- Please send all comments to:
-
- hassan@informatics.wustl.edu
-
- Thanks,
-
- Scott W. Hassan
-
-
-
- p.s. If you think this program has some merit, you too
- can fund better versions of this program and
- others like it by sending $10.00 to:
-
- Scott W. Hassan
- Old Withey RD #1
- Belmont, NY 14813
-
- Contributions will be greatly appreciated. Thanks.
- SHAR_EOF
- fi
- if test -f 'TODO'
- then
- echo shar: "will not over-write existing file 'TODO'"
- else
- cat << \SHAR_EOF > 'TODO'
- *****************************************************************************
- *
- * xgosh
- * April 8, 1991: Verson 1.6
- *
- *****************************************************************************
-
- Drop down Menus
- save load pass help etc.
-
- Print board
-
- *****************************************************************************
- SHAR_EOF
- fi
- if test -f 'blackstone.bm'
- then
- echo shar: "will not over-write existing file 'blackstone.bm'"
- else
- cat << \SHAR_EOF > 'blackstone.bm'
- #define blackstone_width 16
- #define blackstone_height 16
- #define blackstone_x_hot 7
- #define blackstone_y_hot 8
- static char blackstone_bits[] = {
- 0xc0, 0x03, 0xf0, 0x0f, 0xf8, 0x1f, 0xfc, 0x3f, 0xfe, 0x7f, 0xfe, 0x7f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xef, 0xfe, 0x77, 0xfe, 0x7b,
- 0xfc, 0x3c, 0xf8, 0x1f, 0xf0, 0x0f, 0xc0, 0x03};
- SHAR_EOF
- fi
- if test -f 'blackstonemask.bm'
- then
- echo shar: "will not over-write existing file 'blackstonemask.bm'"
- else
- cat << \SHAR_EOF > 'blackstonemask.bm'
- #define blackstonemask_width 16
- #define blackstonemask_height 16
- #define blackstonemask_x_hot 7
- #define blackstonemask_y_hot 8
- static char blackstonemask_bits[] = {
- 0xc0, 0x03, 0xf0, 0x0f, 0xf8, 0x1f, 0xfc, 0x3f, 0xfe, 0x7f, 0xfe, 0x7f,
- 0xff, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xfe, 0x7f,
- 0xfc, 0x3f, 0xf8, 0x1f, 0xf0, 0x0f, 0xc0, 0x03};
- SHAR_EOF
- fi
- if test -f 'gosh.c'
- then
- echo shar: "will not over-write existing file 'gosh.c'"
- else
- cat << \SHAR_EOF > 'gosh.c'
- /*****************************************************************************
- *
- * gosh.c
- *
- * gosh is a set of Go functions.
- *
- ****************************************************************************/
-
- /*#define DEBUGFLAG*/
- #define MODULE "gosh"
-
- #include <stdio.h>
- #include "gosh.h"
-
- /*****************************************************************************
- * other(color)
- * int color;
- * other will return the opposite color of 'color'.
- * if color is black, then other(c) will be white.
- * if color is white, then other(c) will be black.
- *****************************************************************************/
-
- int other(color)
- int color;
- {
- return( (color==BLACK) ? WHITE : BLACK);
- }
-
- /*****************************************************************************
- * IsInBoard(board, x, y)
- * - returns TRUE is x,y is in the bounds of the board.
- * - returns FALSE if not.
- ****************************************************************************/
-
- int IsInBoard(board, x, y)
- Board *board;
- int x,y;
- {
- if(x>=0 && y>=0 && x<board->sizex && y<board->sizey)
- return(TRUE);
- else
- return(FALSE);
- }
-
- /*****************************************************************************
- * AddStone(board, x, y, color)
- * - Adds a stone to board at position x,y of color.
- ****************************************************************************/
-
- int AddStone(board, x, y, color)
- Board *board;
- int x,y;
- int color;
- {
- if(IsInBoard(board, x, y))
- board->grid[x][y] = color;
- else
- printf("Error in AddStone: x,y coordinates out of bounds\n");
- }
-
- /*****************************************************************************
- * GetStone(board, x, y)
- * - returns the stone at x,y.
- ****************************************************************************/
-
- int GetStone(board, x, y)
- Board *board;
- int x,y;
- {
- if(IsInBoard(board, x, y))
- return(board->grid[x][y]);
- else
- printf("Error in GetStone: x,y coordinates out of bounds\n");
- return(FALSE);
- }
-
- /*****************************************************************************
- * CountStones(board, color)
- * - CountStones examines the playing board and counts up the number of 'color'ed
- * stones.
- *****************************************************************************/
-
- int CountStones(board, color)
- Board *board;
- int color;
- {
- register int i,j;
- register int count=0;
-
- for(i=0; i<board->sizex; i++)
- for(j=0; j<board->sizey; j++)
- if(board->grid[i][j]==color)
- count++;
- return(count);
- }
-
- /*****************************************************************************
- * CountStones(board)
- * CountStones examines the playing board and counts all of the stones played.
- *****************************************************************************/
-
- int CountAllStones(board)
- Board *board;
- {
- register int i,j;
- register int count=0;
- for(i=0; i<board->sizex; i++)
- for(j=0; j<board->sizey; j++)
- if(board->grid[i][j]!=EMPTY)
- count++;
- return(count);
- }
-
- CountCapturedStones(board, cbs, cws)
- Board *board;
- int *cbs, *cws;
- {
- MoveTree *head, *node;
-
-
- *cbs = *cws = 0;
- head = board->movetree->next;
-
- if(!IsEmpty(head)) {
- while(!IsEmpty(head)) {
- node = head->kill;
- if(!IsEmpty(node)) {
- node = node->next;
- while(!IsEmpty(node)) {
- if(node->color == BLACK)
- (*cbs)++;
- else if(node->color == WHITE)
- (*cws)++;
- node = node->next;
- }
- }
- head = head->next;
- }
- }
- }
-
- /*****************************************************************************
- * InitBoard(board)
- * - clear the board of stones.
- *****************************************************************************/
-
- InitBoard(board)
- Board *board;
- {
- register int i,j;
- for(i=0; i<board->sizex; i++)
- for(j=0; j<board->sizey; j++)
- board->grid[i][j] = EMPTY;
- }
-
- /*****************************************************************************
- * InitPlayBoard(board, handicap)
- * - clear board and set the handicap stones.
- ****************************************************************************/
-
- InitPlayBoard(board)
- Board *board;
- {
- InitBoard(board);
-
- switch(board->handicap) {
- case(17): AddStone(board,6,board->sizey-7,BLACK);
- case(16): AddStone(board,board->sizex-7,6,BLACK);
- case(15): AddStone(board,board->sizex-7,board->sizey-7,BLACK);
- case(14): AddStone(board,6,6,BLACK);
- case(13): AddStone(board,board->sizex-3,2,BLACK);
- case(12): AddStone(board,2,board->sizey-3,BLACK);
- case(11): AddStone(board,board->sizex-3,board->sizey-3,BLACK);
- case(10): AddStone(board,2,2,BLACK);
- case( 9): AddStone(board,board->sizex/2,board->sizey-4,BLACK);
- case( 8): AddStone(board,3,board->sizey/2,BLACK);
- case( 7): AddStone(board,board->sizex/2,3,BLACK);
- case( 6): AddStone(board,board->sizex-4,board->sizey/2,BLACK);
- case( 5): AddStone(board,board->sizex/2,board->sizey/2,BLACK);
- case( 4): AddStone(board,board->sizex-4,board->sizey-4,BLACK);
- case( 3): AddStone(board,3,board->sizey-4,BLACK);
- case( 2): AddStone(board,board->sizex-4,3,BLACK);
- case( 1): AddStone(board,3,3,BLACK);
- }
- }
-
- /*****************************************************************************
- * CheckLibs(board, workboard, x, y, color)
- * - returns the number of liberties if a stone of color is placed
- * at position x,y.
- ****************************************************************************/
-
- int CheckLibs(board, workboard, x,y,color)
- Board *board;
- Board *workboard;
- int x,y,color;
- {
- DEBUG("CheckLibs", IN);
-
- /* is the stone is the bounds of the board? */
- if(IsInBoard(board, x, y)==FALSE)
- return(0);
-
- /* is the position already worked on? */
- if(GetStone(workboard, x, y) != EMPTY)
- return(0);
-
- /* is the position a liberty? */
- if(GetStone(board, x, y) == EMPTY) {
- AddStone(workboard, x, y, LIB);
- return(1);
- }
-
- /* is the position the other players stone? */
- if(GetStone(board, x, y) == other(color)) {
- AddStone(workboard, x, y, other(color));
- return(0);
- }
-
- /* Mark this position as your stone. */
- AddStone(workboard,x,y,color);
-
- /* Check liberties surrounding this position. */
- return(CheckLibs(board, workboard, x+1, y, color) +
- CheckLibs(board, workboard, x-1, y, color) +
- CheckLibs(board, workboard, x, y-1, color) +
- CheckLibs(board, workboard, x, y+1, color));
- }
-
- /*****************************************************************************
- * PlaceStoneOnBoard(board, x, y, color)
- * Places a stone on board at position x,y of color. It will remove
- * dead groups in the process.
- * the number of liberties are returned.
- ****************************************************************************/
-
- int PlaceStoneOnBoard(board, x, y, color)
- Board *board;
- int x,y,color;
- {
- Board workboard;
-
- DEBUG("PlaceStoneOnBoard", IN);
- workboard.sizex = board->sizex;
- workboard.sizey = board->sizey;
-
- InitBoard(&workboard);
- if(CheckLibs(board, &workboard, x+1, y, other(color)) == 0)
- KillStones(board, x+1, y, other(color));
-
- InitBoard(&workboard);
- if(CheckLibs(board, &workboard, x-1, y, other(color)) == 0)
- KillStones(board, x-1, y, other(color));
-
- InitBoard(&workboard);
- if(CheckLibs(board, &workboard, x, y+1, other(color)) == 0)
- KillStones(board, x, y+1, other(color));
-
- InitBoard(&workboard);
- if(CheckLibs(board, &workboard, x, y-1, other(color)) == 0)
- KillStones(board, x, y-1, other(color));
-
- InitBoard(&workboard);
- DEBUG("PlaceStoneOnBoard", OUT);
- return(CheckLibs(board, &workboard, x+1, y, color) +
- CheckLibs(board, &workboard, x-1, y, color) +
- CheckLibs(board, &workboard, x, y+1, color) +
- CheckLibs(board, &workboard, x, y-1, color));
- }
-
- /*****************************************************************************
- * KillStone(board, x, y, color)
- * - removes the dead stones starting from x,y of color.
- *****************************************************************************/
-
- KillStones(board, x, y, color)
- Board *board;
- int x,y,color;
- {
- DEBUG("KillStones", IN);
- if(IsInBoard(board, x, y)==FALSE)
- return;
-
- if(GetStone(board, x, y) == color) {
- AddStone(board, x, y, EMPTY);
- if(board->movetree->next->kill == NULL) {
- board->movetree->next->kill = InitMoveTree();
- }
- AddNewNode(board->movetree->next->kill, x, y, color);
- }
- else
- return;
-
- KillStones(board, x+1, y, color);
- KillStones(board, x-1, y, color);
- KillStones(board, x, y-1, color);
- KillStones(board, x, y+1, color);
- }
-
- /*****************************************************************************
- * InitMoveTree()
- ****************************************************************************/
-
- MoveTree *InitMoveTree()
- {
- MoveTree *tree;
- tree = (MoveTree *)malloc(sizeof(MoveTree));
- tree->next = NULL;
- return(tree);
- }
- /*****************************************************************************
- * DestroyMoveTree()
- ****************************************************************************/
-
- DestroyMoveTree(head)
- MoveTree *head;
- {
- MoveTree *end;
- if(head != NULL) {
- end = head->next;
- while(end != NULL) {
- free((char *)head);
- head = end;
- end = head->next;
- }
- }
- }
-
- /*****************************************************************************
- * EndOfList(head)
- ****************************************************************************/
-
- MoveTree *EndOfList(head)
- MoveTree *head;
- {
- if(head != NULL)
- while(head->next != NULL)
- head = head->next;
- return(head);
- }
-
- /*****************************************************************************
- * IsEmpty(node)
- ****************************************************************************/
-
- int IsEmpty(node)
- MoveTree *node;
- {
- if(node == NULL)
- return(TRUE);
- else
- return(FALSE);
- }
-
- /*****************************************************************************
- * NextNode(node)
- ****************************************************************************/
-
- MoveTree *NextNode(node)
- MoveTree *node;
- {
- if(!IsEmpty(node))
- node = node->next;
- return(node);
- }
-
- /*****************************************************************************
- * PrevNode(head,node)
- ****************************************************************************/
-
- MoveTree *PrevNode(head, node)
- MoveTree *head, *node;
- {
- if(!IsEmpty(head) && !(IsEmpty(head->next)))
- while(head->next != NULL && head->next != node)
- head = NextNode(head);
- return(head);
- }
-
- /*****************************************************************************
- * InsertNode(head, node)
- ****************************************************************************/
-
- InsertNode(head, node)
- MoveTree *head, *node;
- {
- node->next = head->next;
- head->next = node;
- }
-
- /*****************************************************************************
- * AddNewNode(head, x, y, color)
- ****************************************************************************/
- MoveTree *AddNewNode(head, x, y, color)
- MoveTree *head;
- int x,y, color;
- {
- MoveTree *node;
- node = InitMoveTree();
- InsertNode(head, node);
- node->x = x;
- node->y = y;
- node->color = color;
- node->kill = NULL;
- return(node);
- }
-
- DeleteNode(head)
- MoveTree *head;
- {
- MoveTree *node;
-
- if(!IsEmpty(head->next)) {
- node = NextNode(head);
- if(!IsEmpty(node) && !IsEmpty(node->kill))
- DestroyMoveTree(node->kill);
- head->next = NextNode(node);
- free(node);
- }
- }
-
- /*****************************************************************************
- * PrintList(head)
- ****************************************************************************/
- PrintList(head)
- MoveTree *head;
- {
- int i;
- i=1;
- if(!IsEmpty(head)) {
- head = NextNode(head);
- while(!IsEmpty(head)) {
- if(head->color == WHITE)
- printf("%d: %dx%d WHITE\n", i, head->x, head->y);
- else
- printf("%d: %dx%d BLACK\n", i, head->x, head->y);
- i++;
- if(!IsEmpty(head->kill)) {
- printf("Start of Kill list:\n");
- PrintList(head->kill);
- printf("end of Kill list.\n");
- }
- head = NextNode(head);
- }
- }
- }
-
- /*****************************************************************************
- * Length(head) - length of the list
- ****************************************************************************/
- Length(head)
- MoveTree *head;
- {
- int i;
- i=0;
- if(!IsEmpty(head)) {
- head = NextNode(head);
- while(!IsEmpty(head)) {
- i++;
- head = NextNode(head);
- }
- }
- return(i);
- }
-
- /*****************************************************************************
- * UndoLastMove(board)
- ****************************************************************************/
-
- int UndoLastMove(board)
- Board *board;
- {
- int kills;
- MoveTree *head;
-
- head = board->movetree->next;
- kills = 0;
-
- if(!IsEmpty(head)) {
- if(head->color != PASS && head->color != KILL)
- AddStone(board, head->x, head->y, EMPTY);
- head = head->kill;
- if(!IsEmpty(head))
- head = head->next;
- while(head != NULL) {
- AddStone(board, head->x, head->y, head->color);
- head = head->next;
- kills++;
- }
- }
- DeleteNode(board->movetree);
- return(kills);
- }
-
- /*****************************************************************************
- * LoadMoves(board)
- ****************************************************************************/
-
- MoveTree *LoadMoves(board, filename)
- Board *board;
- {
- FILE *fp;
- char s[81];
- int x,y,color;
- MoveTree *lastmove;
- lastmove = NULL;
-
- board->movetree = InitMoveTree();
- if((fp = fopen(filename, "r"))!=NULL) {
- fscanf(fp, "%s %d %d", s, &(board->sizex), &(board->sizey));
- fscanf(fp, "%s %d", s, &(board->handicap));
- InitPlayBoard(board);
- while(!feof(fp)) {
- fscanf(fp, "%d %d %d", &x, &y, &color);
- if(color != PASS) {
- AddStone(board, x, y, color);
- lastmove = AddNewNode(board->movetree, x, y, color);
- PlaceStoneOnBoard(board, x, y, color);
- } else
- AddNewNode(board->movetree, x, y, color);
- }
- fclose(fp);
- }
- return(lastmove);
- }
-
- /*****************************************************************************
- * SaveMoves(board)
- ****************************************************************************/
-
- SaveMoves(board, filename)
- Board *board;
- {
- FILE *fp;
- MoveTree *node;
- node = board->movetree;
- if(!IsEmpty(node)) {
- node = EndOfList(node);
- if((fp = fopen(filename, "w"))!=0L) {
- fprintf(fp, "size: %d %d\n",board->sizex, board->sizey);
- fprintf(fp, "handicap: %d\n",board->handicap);
- while(!IsEmpty(node) && board->movetree != node) {
- fprintf(fp,"%d %d %d\n",node->x, node->y, node->color);
- node = PrevNode(board->movetree, node);
- }
- fclose(fp);
- }
- }
- }
-
- /*****************************************************************************
- * PrintMoves(board)
- ****************************************************************************/
-
- PrintMoves(board, filename)
- Board *board;
- {
- FILE *fp;
- MoveTree *node;
- int i,j;
-
- if((fp = fopen(filename, "w")) != 0L) {
- fprintf(fp, "%d %d BoardSize \n", board->sizex, board->sizey);
- for(i=0; i<board->sizex; i++) {
- for(j=0; j<board->sizey; j++) {
- if(board->grid[i][j]==BLACK)
- fprintf(fp, "%d %d () Black \n",i,j);
- else if(board->grid[i][j]==WHITE)
- fprintf(fp, "%d %d () White \n",i,j);
- }
- }
- fclose(fp);
- }
- }
-
- /*****************************************************************************
- * NeighborColor(board,x,y)
- ****************************************************************************/
- /* The followings are calulation */
- NeighborColor(board,x,y)
- Board *board;
- int x,y;
- {
- int color = EMPTY;
- int i,j;
- for(i=x+1; i < board->sizex; i++)
- if(board->grid[i][y] != EMPTY) {
- color = board->grid[i][y];
- break;
- }
- for(i=x-1;i>=0;i--) {
- if(board->grid[i][y] != EMPTY) {
- if(color != EMPTY && board->grid[i][y]!=color)
- return EMPTY;
- else {
- color = board->grid[i][y];
- break;
- }
- }
- }
-
- for(j=y+1;j<board->sizey;j++) {
- if(board->grid[x][j] != EMPTY) {
- if(color != EMPTY && board->grid[x][j]!=color) return EMPTY;
- else {
- color = board->grid[x][j];
- break;
- }
- }
- }
- for(j=y-1; j>=0; j--) {
- if(board->grid[x][j] != EMPTY) {
- if(color != EMPTY && board->grid[x][j]!=color)
- return EMPTY;
- else {
- color = board->grid[x][j];
- break;
- }
- }
- }
- return color;
- }
-
- CalcuBoard(board, white, black, undet)
- Board *board;
- int *white, *black, *undet;
- {
- int i,j,k;
- *white=0;
- *black=0;
- *undet=0;
- for(i=0; i<board->sizex; i++)
- for(j=0; j<board->sizey; j++)
- if (board->grid[i][j] == EMPTY) {
- if(NeighborColor(board,i,j)==BLACK)
- (*black)++;
- else if(NeighborColor(board,i,j)==WHITE)
- (*white)++;
- else
- (*undet)++;
- }
- }
- SHAR_EOF
- fi
- if test -f 'gosh.h'
- then
- echo shar: "will not over-write existing file 'gosh.h'"
- else
- cat << \SHAR_EOF > 'gosh.h'
- /*****************************************************************************
- *
- * gosh.h
- *
- ****************************************************************************/
-
- #define EXIT_FAILURE -1
-
-
- #define EMPTY -1
- #define WHITE 0
- #define BLACK 1
- #define LIB 2
-
- #define KILL -3
- #define PASS -2
- #define NOMOVE -1
-
- #ifndef TRUE
- #define TRUE 1
- #endif
-
- #define FALSE 0
-
- #define MAXX 50
- #define MAXY 50
-
- struct MOVETREE {
- int x, y; /* the x and y coordinates of the stone. */
- int color; /* the color of the stone. */
- char *comment; /* a comment attached to the node. */
- struct MOVETREE *next; /* next move tree. */
- struct MOVETREE *kill; /* list of killed stones. */
- };
-
- typedef struct MOVETREE MoveTree;
-
- struct BOARD {
- int sizex, sizey;
- MoveTree *movetree;
- int handicap;
- int grid[MAXX][MAXY];
- };
-
- typedef struct BOARD Board;
-
- #define FORI(n,stmts) { int I; for(I=0; I<n; I++) { stmts } }
-
- /******************************************************************************/
-
- #ifdef TIMEFLAG
- long clock();
- #define TIMESTART { long ts_timer; ts_timer = clock()
- #define TIMEEND(str) printf("%s: TIME(%s)=%10.4f\n",MODULE,(str), (float)(clock(
- ) - ts_timer) / 1000.0); }
- #else
- #define TIMESTART ;
- #define TIMEEND(str) ;
- #endif
-
- #define IN 1
- #define OUT 0
-
- #ifdef DEBUGFLAG
- #define DEBUG(str,type) if(type==IN) printf("%s: %s IN\n",MODULE,str); else if (type==OUT) printf("%s: %s OUT\n",MODULE,str); else printf("%s: %s\n", MODULE, str); fflush(stdout);
- #else
- #define DEBUG(str,type) ;
- #endif
-
- /* return the maximum of two numbers. */
- #ifndef MAX
- #define MAX(x,y) (((x)>(y)) ? (x) : (y))
- #endif
-
- /* return the minimum of two numbers. */
- #ifndef MIN
- #define MIN(x,y) (((x)<(y)) ? (x) : (y))
- #endif
-
- MoveTree *InitMoveTree();
- int DestroyMoveTree();
- MoveTree *EndOfList();
- MoveTree *NextNode();
- MoveTree *PrevNode();
- int InsertNode();
- int AddNodeAtEnd();
- MoveTree *AddNewNode();
- int PrintList();
- MoveTree *LoadMoves();
-
-
- /******************************************************************************/
-
-
-
- SHAR_EOF
- fi
- if test -f 'gray.bm'
- then
- echo shar: "will not over-write existing file 'gray.bm'"
- else
- cat << \SHAR_EOF > 'gray.bm'
- #define gray_width 2
- #define gray_height 2
- static char gray_bits[] = {
- 0x01, 0x02};
- SHAR_EOF
- fi
- if test -f 'whitestone.bm'
- then
- echo shar: "will not over-write existing file 'whitestone.bm'"
- else
- cat << \SHAR_EOF > 'whitestone.bm'
- #define whitestone_width 16
- #define whitestone_height 16
- #define whitestone_x_hot 7
- #define whitestone_y_hot 8
- static char whitestone_bits[] = {
- 0xc0, 0x03, 0x30, 0x0c, 0x08, 0x10, 0x04, 0x20, 0x02, 0x40, 0x02, 0x40,
- 0x01, 0x80, 0x01, 0x80, 0x01, 0x90, 0x01, 0x90, 0x02, 0x48, 0x02, 0x44,
- 0x04, 0x23, 0x08, 0x10, 0x30, 0x0c, 0xc0, 0x03};
- SHAR_EOF
- fi
- if test -f 'whitestonemask.bm'
- then
- echo shar: "will not over-write existing file 'whitestonemask.bm'"
- else
- cat << \SHAR_EOF > 'whitestonemask.bm'
- #define whitestonemask_width 16
- #define whitestonemask_height 16
- #define whitestonemask_x_hot 7
- #define whitestonemask_y_hot 8
- static char whitestonemask_bits[] = {
- 0xc0, 0x03, 0xf0, 0x0f, 0xf8, 0x1f, 0xfc, 0x3f, 0xfe, 0x7f, 0xfe, 0x7f,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x7f, 0xfe, 0x7f,
- 0xfc, 0x3f, 0xf8, 0x1f, 0xf0, 0x0f, 0xc0, 0x03};
- SHAR_EOF
- fi
- if test -f 'xgosh'
- then
- echo shar: "will not over-write existing file 'xgosh'"
- else
- cat << \SHAR_EOF > 'xgosh'
- ò≡.1æ..û≡Makefile░≡NOTES╣≡README└≡TODOú±
- blackstone.bm¡±blackstonemask.bm≥gosh.c!≥gosh.hL≥gray.bmM≥
- whitestone.bm]≥whitestonemask.bm^≥xgosh.bma≥xgosh.cf≥xgosh_title.bmj≥╨xgosh
- SHAR_EOF
- chmod +x 'xgosh'
- fi
- if test -f 'xgosh.bm'
- then
- echo shar: "will not over-write existing file 'xgosh.bm'"
- else
- cat << \SHAR_EOF > 'xgosh.bm'
- #define xgosh_width 64
- #define xgosh_height 64
- static char xgosh_bits[] = {
- 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x42, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82, 0x70, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0xf8, 0x08, 0x82, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x42, 0x82, 0x20, 0x08, 0x82, 0xf8, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x70, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x42, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x1c, 0x82, 0x20, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x3e, 0x82, 0x20, 0x08, 0x82, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x42, 0x82, 0x20, 0x3e, 0x82, 0x20, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x1c, 0x82, 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82, 0x70, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0xf8, 0x08, 0x82, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x42, 0x82, 0x20, 0x08, 0x82, 0xf8, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x70, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0xc2, 0x21, 0x08, 0x82, 0x20, 0x08, 0x87, 0x42,
- 0x22, 0x22, 0x08, 0x82, 0x20, 0x88, 0x8f, 0x42, 0x3f, 0xfe, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x42, 0x22, 0x22, 0x08, 0x82, 0x20, 0x88, 0x8f, 0x42,
- 0xc2, 0x21, 0x08, 0x82, 0x20, 0x08, 0x87, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82, 0x70, 0x1c, 0x87, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0xf8, 0xbe, 0x88, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xf8, 0x42, 0x82, 0x20, 0x08, 0x82, 0xf8, 0xbe, 0x88, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x70, 0x1c, 0x87, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x70, 0x08, 0x87, 0x20, 0x1c, 0x82, 0x42,
- 0x82, 0x88, 0x88, 0x88, 0x20, 0x3e, 0x82, 0x42, 0xff, 0x8f, 0xff, 0xf8,
- 0xff, 0xff, 0xff, 0x42, 0x82, 0x88, 0x88, 0x88, 0x20, 0x3e, 0x82, 0x42,
- 0x82, 0x70, 0x08, 0x87, 0x20, 0x1c, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82, 0x70, 0x1c, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x88, 0x22, 0x82, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0x8f, 0xe3, 0xff, 0x42, 0x82, 0x20, 0x08, 0x82, 0x88, 0x22, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x70, 0x1c, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82,
- 0x20, 0x08, 0x82, 0x42, 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42,
- 0x82, 0x20, 0x08, 0x82, 0x20, 0x08, 0x82, 0x42, 0xff, 0xff, 0xff, 0xff,
- 0xff, 0xff, 0xff, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42,
- 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x43, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x40, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
- SHAR_EOF
- fi
- if test -f 'xgosh.c'
- then
- echo shar: "will not over-write existing file 'xgosh.c'"
- else
- cat << \SHAR_EOF > 'xgosh.c'
- /*****************************************************************************
- *
- * xgosh
- * (x) (go) by (s)cott (h)assan
- *
- * Sept. 11, 1990
- *
- * Version 1.7 Apr 10, 1991
- *
- * Modified by Eric Osman (osman@hannah.enet.dec.com)
- * Use X toolkit instead of "select" so it works on both
- * vms as well as u*ix.
- *
- * Version 1.6 March 12, 1991
- * Version 1.5.2 March 8, 1991
- * Version 1.5 February 28, 1991
- * Version 1.2 January 5, 1991
- *
- * hassan@acsu.buffalo.edu
- * hassan@informatics.wustl.edu
- *
- * DESCRIPTION:
- *
- * xgosh is a quick and easy game of Go. It allows two people to play a
- * game of Go easily over the Network. It uses the X Windows' feature of
- * opening two displays (One for each player.)
- *
- * NOTE: Only one xgosh program runs per game. It serves both displays at
- * the same time. This is unlike the older netgo programs when both players
- * had to have a copy of the program and meet at a port. X Windows handles
- * all of this busywork.
- *
- ****************************************************************************/
-
- #define MODULE "xgosh"
- /*#define DEBUGFLAG*/
-
- #define VERSION "1.7"
-
- #include <X11/Xlib.h>
- #include <X11/Xutil.h>
- #include <X11/X.h>
- #include <X11/Xatom.h>
- #include <X11/Intrinsic.h>
-
- #include <sys/time.h>
- #include <sys/types.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <ctype.h>
-
- #include <math.h>
- /*****************************************************************************/
-
- #include "whitestone.bm"
- #include "blackstone.bm"
- #include "whitestonemask.bm"
- #include "blackstonemask.bm"
- #include "gray.bm"
- #include "xgosh.bm"
- #include "xgosh_title.bm"
-
- #include "gosh.h"
-
- XtAppContext app_context;
- int global_argc;
- char **global_argv;
-
- /*****************************************************************************/
-
- #define InfoHeight 30
- #define InfoWidth 30
- #define InfoBuffer 30
-
- #define MESS_OFF_X 30
- #define MESS_OFF_Y InfoHeight + 10
-
- #define TITLE_BORDER 10
- #define TITLE_BUFFER 100
-
- #define BlackTimerPos 6*InfoWidth
- #define WhiteTimerPos 8*InfoWidth
-
- #if 0 /* commented out merely because these don't seem to be found on vms */
- #define CoolFont "8x13"
- #define BoldCoolFont "8x13bold"
- #endif
- #define CoolFont "fixed"
- #define BoldCoolFont "fixed"
-
-
- #define TITLEWINDOW 5
- #define INFOWINDOW 4
- #define BOARDWINDOW 2
- #define MAINWINDOW 1
- #define ROOTWINDOW 0
-
- #define TITLEMODE 0
- #define PLAYMODE 1
- #define HANDICAPMODE 2
- #define KILLMODE 3
- #define ENDMODE 4
-
- /*****************************************************************************/
-
- struct PLAYER {
- Display *display;
- Window window[10];
- GC gc[10];
- XSizeHints hint[10];
- int screen;
- XFontStruct *font_struct;
- XFontStruct *bold_font_struct;
- unsigned long foreground, background, boardcolor;
- Pixmap MouseStone, MouseStoneMask, IconPixmap, GreyPixmap, TitlePixmap;
- Cursor StoneCursor;
- int dx,dy,ox,oy;
- int color;
- int Mode;
- };
-
- /*****************************************************************************/
-
- /*****************************************************************************
- * DrawStone(display, window, gc, foreground, bg, x, y, dx, dy, type)
- * - Draws a stone of color type at x,y of size dx,dy in window of display
- * and of foreground and bg.
- ****************************************************************************/
-
- DrawStone(display, window, gc, fg, bg, x, y, dx, dy, type)
- Display *display;
- Window window;
- GC gc;
- unsigned long fg, bg;
- int x, y, dx,dy;
- int type;
- {
- if(type==WHITE) {
- XSetForeground(display, gc, bg);
- XFillArc(display, window, gc, x-dx/2, y-dy/2, dx, dy, 0, 360*64);
- XSetForeground(display, gc, fg);
- XDrawArc(display, window, gc, x-dx/2, y-dy/2, dx, dy, 0, 360*64);
- /* Draw the glint */
- XDrawArc(display, window, gc, x-((dx*2)/6), y-((dy*2)/6), (dx*2)/3, (dy*2)/3, -15*64, -60*64);
- } else if(type==BLACK) {
- XSetForeground(display, gc, fg);
- XFillArc(display, window, gc, x-dx/2, y-dy/2 , dx, dy, 0, 360*64);
- XDrawArc(display, window, gc, x-dx/2, y-dy/2 , dx, dy, 0, 360*64);
- XSetForeground(display, gc, bg);
- /* Draw the glint */
- XDrawArc(display, window, gc, x-((dx*2)/6), y-((dy*2)/6), (dx*2)/3, (dy*2)/3, -15*64, -60*64);
- }
- /*else if(type==EMPTY) {
- XSetForeground(display, gc, bg);
- XFillArc(display, window, gc, x-dx/2, y-dy/2, dx, dy, 0, 360*64);
- XDrawArc(display, window, gc, x-dx/2, y-dy/2, dx, dy, 0, 360*64);
- XSetForeground(display, gc, fg);
- XDrawLine(display, window, gc, x, y-dy/2, x, y+dy/2);
- XDrawLine(display, window, gc, x-dx/2, y, x+dx/2, y);
- }*/
- }
-
- /*****************************************************************************
- * DrawCross(display, window, gc, fg, bg, x, y, dx, dy, type)
- * - Draws a cross to mark the last move at x,y.
- ****************************************************************************/
-
- DrawCross(display, window, gc, fg, bg, x, y, dx, dy, type)
- Display *display;
- Window window;
- GC gc;
- unsigned long fg, bg;
- int x, y, dx,dy;
- int type;
- {
- int ddx, ddy;
- ddx = dx / 6;
- ddy = dy / 6;
-
- if(type==BLACK)
- XSetForeground(display, gc, bg);
- else
- XSetForeground(display, gc, fg);
-
- XDrawLine(display, window, gc, x - ddx, y - ddy, x + ddx, y + ddy);
- XDrawLine(display, window, gc, x - ddx, y + ddy, x + ddx, y - ddy);
- }
-
- /*****************************************************************************
- * DrawPoint(display, window, gc, fg, bg, x, y, dx, dy)
- * - Draws a small point at x,y.
- ****************************************************************************/
-
- DrawPoint(display, window, gc, x, y, dx, dy)
- Display *display;
- Window window;
- GC gc;
- int x, y, dx,dy;
- {
- XFillArc(display, window, gc, x-dx/8, y-dy/8, dx/4, dy/4, 0, 360*64);
- XDrawArc(display, window, gc, x-dx/8, y-dy/8, dx/4, dy/4, 0, 360*64);
- }
-
- /*****************************************************************************/
-
- int GridToScrn(x, sx, dx)
- int x, sx, dx;
- {
- return(sx + dx * x);
- }
-
- int ScrnToGrid(x, sx, dx)
- int x, sx, dx;
- {
- return((x - sx) / dx);
- }
-
- /*****************************************************************************
- * FigureMouseClick(mx, my, sizex, sizey, dx, dy, sx, sy, x, y)
- * - returns in x,y the coordinates on the game board of the
- * mx,my position.
- * returns TRUE if successful.
- * returns FALSE otherwise.
- ****************************************************************************/
-
- int FigureMouseClick(board, mx, my, dx, dy, sx, sy, x, y)
- Board *board;
- int mx, my;
- int dx, dy, sx, sy;
- int *x,*y;
- {
- *x = ScrnToGrid(mx+dx/2, sx, dx);
- *y = ScrnToGrid(my+dy/2, sy, dy);
-
- return(IsInBoard(board, *x, *y));
- }
-
- DrawStoneOnBoard(display, window, gc, fg, bg, x, y, dx, dy, sx, sy, type)
- Display *display;
- Window window;
- GC gc;
- unsigned long fg, bg;
- int x, y, dx,dy;
- int sx,sy;
- int type;
- {
- DrawStone(display, window, gc, fg, bg, GridToScrn(x, sx, dx), GridToScrn(y, sy, dy), dx, dy, type);
- }
-
- DrawAllPieces(display, window, gc, fg, bg, board, dx, dy, sx, sy)
- Display *display;
- Window window;
- GC gc;
- unsigned long fg, bg;
- Board *board;
- int dx,dy,sx,sy;
- {
- int i,j;
- DEBUG("DrawAllPieces", IN);
- for(i=0; i<board->sizex; i++)
- for(j=0; j<board->sizey; j++)
- DrawStoneOnBoard(display, window, gc, fg, bg, i, j, dx, dy, sx, sy, GetStone(board, i, j));
- DEBUG("DrawAllPieces", OUT);
- }
-
- /*****************************************************************************/
-
- GetMeasures(board, width, height, dx, dy, ox, oy)
- Board *board;
- int width, height;
- int *dx, *dy;
- int *ox, *oy;
- {
- int awidth, aheight;
-
- *dx = width / board->sizex;
- *dy = height / board->sizey;
-
- awidth = *dx * board->sizex;
- aheight = *dy * board->sizey;
-
- *ox = (width - awidth + *dx) / 2;
- *oy = (height - aheight + *dy) / 2;
- }
-
- /*****************************************************************************/
-
- DrawBoard(display, window, gc, fg, bg, board, dx, dy, ox, oy)
- Display *display;
- Window window;
- GC gc;
- unsigned long fg, bg;
- Board *board;
- int dx, dy, ox, oy;
- {
- int i,j;
- XSegment segments[MAXY+MAXX];
-
- DEBUG("DrawBoard", IN);
-
- if(board->sizey==1) {
- for(i=0; i<board->sizex; i++) {
- segments[i].x1 = ox + i * dx;
- segments[i].y1 = oy - dy/2;
- segments[i].x2 = ox + i * dx;
- segments[i].y2 = oy + (board->sizey-1) * dy + dy/2;
- }
- XDrawSegments(display, window, gc, segments, board->sizex);
- } else {
- for(i=0; i<board->sizey; i++) {
- segments[i].x1 = ox;
- segments[i].y1 = oy + i * dy;
- segments[i].x2 = ox + (board->sizex - 1) * dx;
- segments[i].y2 = oy + i * dy;
- }
- XDrawSegments(display, window, gc, segments, board->sizey);
- }
-
- if(board->sizex==1) {
- for(i=0; i<board->sizey; i++) {
- segments[i].x1 = ox - dx/2;
- segments[i].y1 = oy + i * dy;
- segments[i].x2 = ox + (board->sizex - 1) * dx + dx/2;
- segments[i].y2 = oy + i * dy;
- }
- XDrawSegments(display, window, gc, segments, board->sizey);
- } else {
- for(i=0; i<board->sizex; i++) {
- segments[i].x1 = ox + i * dx;
- segments[i].y1 = oy;
- segments[i].x2 = ox + i * dx;
- segments[i].y2 = oy + (board->sizey - 1) * dy;
- }
- XDrawSegments(display, window, gc, segments, board->sizex);
- }
-
-
- XDrawRectangle(display, window, gc, ox-2, oy-2, dx*(board->sizex-1)+4, dy*(board->sizey-1)+4);
-
- if(board->sizex == 19 && board->sizey == 19) {
- for(i=3; i<=15; i+=6)
- for(j=3; j<=15; j+=6)
- DrawPoint(display, window, gc, GridToScrn(i, ox, dx), GridToScrn(j, oy, dy), dx, dy);
- }
-
- DEBUG("DrawBoard", OUT);
- }
-
- DrawTimer(display, window, gc, fg, bg, x, y, dx, dy)
- Display *display;
- Window window;
- GC gc;
- unsigned long fg, bg;
- int x,y;
- int dx,dy;
- {
- XSetForeground(display, gc, bg);
- XFillArc(display, window, gc, x-dx/2, y-dy/2, dx, dy, 0, 360*64);
- XSetForeground(display, gc, fg);
- XDrawArc(display, window, gc, x-dx/2, y-dy/2, dx, dy, 0, 360*64);
-
- }
-
- UpdateTimer(display, window, gc, x, y, dx, dy, time)
- Display *display;
- Window window;
- GC gc;
- int x,y;
- int dx,dy;
- time_t time;
- {
- int min, sec;
- double angle;
- int x2,y2;
- min = time / 60;
- sec = time - (min * 60);
-
- angle = min / 60.0 * 2.0 * 3.14159 - 3.14159/2.0;
- x2 = 0.50 * (dx/2.0) * cos(angle);
- y2 = 0.50 * (dy/2.0) * sin(angle);
- XDrawLine(display, window, gc, x, y, x+x2, y+y2);
-
- angle = sec / 60.0 * 2.0 * 3.14159 - 3.14159/2.0;
- x2 = 0.80 * (dx/2.0) * cos(angle);
- y2 = 0.80 * (dy/2.0) * sin(angle);
- XDrawLine(display, window, gc, x, y, x+x2, y+y2);
- }
-
- DrawTurnMarkers(display, window, gc, fg, bg, dx, dy, turn)
- Display *display;
- Window window;
- GC gc;
- unsigned long fg, bg;
- int dx,dy;
- int turn;
- {
- DrawStone(display, window, gc, fg, bg, dx+dx/2, 2+dy/2, dx, dy, WHITE);
- DrawStone(display, window, gc, fg, bg, 3*dx+dx/2, 2+dy/2, dx, dy, BLACK);
- if(turn == WHITE) {
- XSetForeground(display, gc, bg);
- XDrawRectangle(display, window, gc, dx*3-1, 1, dx+2, dy+2);
- XSetForeground(display, gc, fg);
- XDrawRectangle(display, window, gc, dx-1, 1, dx+2, dy+2);
- } else if(turn==BLACK) {
- XSetForeground(display, gc, bg);
- XDrawRectangle(display, window, gc, dx-1, 1, dx+2, dy+2);
- XSetForeground(display, gc, fg);
- XDrawRectangle(display, window, gc, dx*3-1, 1, dx+2, dy+2);
- }
- }
-
- XCenterString(display, window, gc, width, height, string, font_struct)
- Display *display;
- Window window;
- GC gc;
- int width, height;
- char *string;
- XFontStruct *font_struct;
- {
- XCharStruct overall;
- int ascent, descent, dir;
- int a_width;
- int x,y;
-
- a_width = XTextWidth(font_struct, string, strlen(string));
- XTextExtents(font_struct, string, strlen(string), &dir, &ascent, &descent, &overall);
- x = (width - a_width) / 2;
- y = (height + ascent) / 2 ;
-
- XDrawImageString(display, window, gc, x, y, string, strlen(string));
- }
-
- XGetHeightWindow(display, window, width, height)
- Display *display;
- Window window;
- unsigned int *width, *height;
- {
- Window root;
- int x,y;
- int bw, depth;
-
- return(XGetGeometry (display, window, &root, &x, &y, width, height, &bw, &depth));
- }
-
- DrawInfoText(display, window, gc, x, y, string, font_struct)
- Display *display;
- Window window;
- GC gc;
- int x,y;
- char *string;
- XFontStruct *font_struct;
- {
- XCharStruct overall;
- int ascent, descent, dir;
- int a_width;
- unsigned width, height;
-
- a_width = XTextWidth(font_struct, string, strlen(string));
- XTextExtents(font_struct, string, strlen(string), &dir, &ascent, &descent, &overall);
-
- XGetHeightWindow(display, window, &width, &height);
- XClearArea(display, window, x, y, width, ascent+descent, FALSE);
-
- y = (y + ascent);
-
- XDrawImageString(display, window, gc, x, y, string, strlen(string));
-
- return(ascent+descent);
- }
-
-
-
- /*****************************************************************************/
-
- /*****************************************************************************
- * LookUpColor(display, name, xcolor, color)
- * - returns the color name in xcolor and the index of xcolor in color.
- ****************************************************************************/
-
- int LookUpColor(display, name, xcolor, color)
- Display *display;
- char *name;
- XColor *xcolor;
- unsigned long *color;
- {
- XColor colour;
- if(XAllocNamedColor(display, DefaultColormap(display, DefaultScreen(display)), name,
- &colour, xcolor) == 0) {
- /* printf("LookUpColor: could not allocate %s.\n", name);*/
- return(FALSE);
- }
- *color = xcolor->pixel;
- return(TRUE);
- }
-
- /*****************************************************************************
- * OpenDisplay(ply, displaystring, geostring)
- * - Sets up everything in order to start using windows in X.
- ****************************************************************************/
-
- OpenDisplay(ply, displaystring, geostring, boardcolor, sizex, sizey)
- struct PLAYER *ply;
- char *displaystring;
- char *geostring;
- char *boardcolor;
- int sizex, sizey;
- {
- Display *dpy;
- XWMHints WMHints;
- XColor fg, bg, color;
- char title[81];
-
- DEBUG("OpenDisplay", IN);
-
- /* initialization */
- if(!(ply->display = XtOpenDisplay(app_context, displaystring, "xgosh",
- "xgosh", 0, 0, &global_argc, global_argv))) {
- printf("OpenDisplay: can not open display (%s).\n", displaystring);
- exit(0);
- }
- dpy = ply->display;
- ply->screen = DefaultScreen(dpy);
- ply->window[ROOTWINDOW] = DefaultRootWindow(dpy);
-
- /* default pixel values */
- if(LookUpColor(dpy, "White", &bg, &(ply->background))==FALSE)
- ply->background = WhitePixel( dpy, ply->screen);
- if(LookUpColor(dpy, "Black", &fg, &(ply->foreground))==FALSE)
- ply->foreground = BlackPixel( dpy, ply->screen);
-
- ply->boardcolor = WhitePixel( dpy, ply->screen);
- if(boardcolor != 0L)
- LookUpColor(dpy, boardcolor, &color, &(ply->boardcolor));
- else
- LookUpColor(dpy, "Tan1", &color, &(ply->boardcolor));
-
- ply->hint[BOARDWINDOW].x = 200;
- ply->hint[BOARDWINDOW].y = 300;
- ply->hint[BOARDWINDOW].width = (400 / MAX(sizex, sizey)) * sizex;
- ply->hint[BOARDWINDOW].height = (400 / MAX(sizex, sizey)) * sizey;
-
- ply->hint[INFOWINDOW].x = 200;
- ply->hint[INFOWINDOW].y = 200;
- ply->hint[INFOWINDOW].width = 400;
- ply->hint[INFOWINDOW].height = 70;
-
- ply->hint[TITLEWINDOW].x = 200;
- ply->hint[TITLEWINDOW].y = 200;
- ply->hint[TITLEWINDOW].width = noname_width + 2*TITLE_BORDER;
- ply->hint[TITLEWINDOW].height = noname_height + 2*TITLE_BORDER + TITLE_BUFFER;
-
- if(geostring != 0L)
- XParseGeometry(geostring, &ply->hint[BOARDWINDOW].x, &ply->hint[BOARDWINDOW].y,
- (unsigned int *) &ply->hint[BOARDWINDOW].width,
- (unsigned int *) &ply->hint[BOARDWINDOW].height);
-
- ply->hint[BOARDWINDOW].flags = PPosition | PSize | PAspect | PMinSize;
- ply->hint[BOARDWINDOW].min_aspect.x = sizex;
- ply->hint[BOARDWINDOW].min_aspect.y = sizey;
- ply->hint[BOARDWINDOW].max_aspect.x = sizex;
- ply->hint[BOARDWINDOW].max_aspect.y = sizey;
- ply->hint[BOARDWINDOW].min_width = 70;
- ply->hint[BOARDWINDOW].min_height = 70;
-
- ply->window[BOARDWINDOW] =
- XCreateSimpleWindow(dpy, ply->window[ROOTWINDOW], ply->hint[BOARDWINDOW].x,
- ply->hint[BOARDWINDOW].y,
- ply->hint[BOARDWINDOW].width, ply->hint[BOARDWINDOW].height, 0,
- ply->foreground, ply->background);
-
- ply->window[INFOWINDOW] =
- XCreateSimpleWindow(dpy, ply->window[ROOTWINDOW], ply->hint[INFOWINDOW].x,
- ply->hint[INFOWINDOW].y,
- ply->hint[INFOWINDOW].width, ply->hint[INFOWINDOW].height, 1,
- ply->foreground, ply->background);
-
- ply->window[TITLEWINDOW] =
- XCreateSimpleWindow(dpy, ply->window[ROOTWINDOW], ply->hint[TITLEWINDOW].x,
- ply->hint[TITLEWINDOW].y,
- ply->hint[TITLEWINDOW].width, ply->hint[TITLEWINDOW].height, 1,
- ply->foreground, ply->background);
-
- if(ply->color == WHITE)
- strcpy(title, "xgosh: Player White");
- else
- strcpy(title, "xgosh: Player Black");
-
- XSetStandardProperties(dpy, ply->window[BOARDWINDOW], title, title, None,
- 0L, 0, &ply->hint[BOARDWINDOW]);
- XSetStandardProperties(dpy, ply->window[INFOWINDOW], title, title, None,
- 0L, 0, &ply->hint[INFOWINDOW]);
- XSetStandardProperties(dpy, ply->window[TITLEWINDOW], title, title, None,
- 0L, 0, &ply->hint[TITLEWINDOW]);
-
- /* Set up the icon bitmap */
-
- ply->IconPixmap = XCreateBitmapFromData(dpy, ply->window[BOARDWINDOW], xgosh_bits,
- xgosh_width, xgosh_height);
-
- /* tell the Window Manager about the icon */
- WMHints.icon_pixmap = ply->IconPixmap;
- WMHints.initial_state = NormalState;
- WMHints.input = True; /* thanks to Ken Blake */
- WMHints.flags = IconPixmapHint | StateHint | InputHint;
-
- XSetWMHints(dpy, ply->window[TITLEWINDOW], &WMHints);
- XSetWMHints(dpy, ply->window[INFOWINDOW], &WMHints);
- XSetWMHints(dpy, ply->window[BOARDWINDOW], &WMHints);
-
- /* input event selection */
- XSelectInput( dpy, ply->window[TITLEWINDOW], StructureNotifyMask | KeyPressMask |
- ButtonPressMask | ExposureMask );
- XSelectInput( dpy, ply->window[BOARDWINDOW], StructureNotifyMask | KeyPressMask |
- ButtonPressMask | ExposureMask );
- XSelectInput( dpy, ply->window[INFOWINDOW], StructureNotifyMask |
- ButtonPressMask | ExposureMask);
-
- /* windowmn mapping */
- XMapWindow(dpy, ply->window[TITLEWINDOW]);
-
- ply->gc[BOARDWINDOW] = XCreateGC(dpy, ply->window[BOARDWINDOW],0,0);
- XSetBackground(dpy, ply->gc[BOARDWINDOW], ply->background);
- XSetForeground(dpy, ply->gc[BOARDWINDOW], ply->foreground);
-
- ply->gc[TITLEWINDOW] = XCreateGC(dpy, ply->window[TITLEWINDOW],0,0);
- XSetBackground(dpy, ply->gc[TITLEWINDOW], ply->background);
- XSetForeground(dpy, ply->gc[TITLEWINDOW], ply->foreground);
- ply->TitlePixmap = XCreateBitmapFromData(dpy, ply->window[TITLEWINDOW], noname_bits,
- noname_width, noname_height);
- ply->gc[INFOWINDOW] = XCreateGC(dpy, ply->window[INFOWINDOW],0,0);
- XSetBackground(dpy, ply->gc[INFOWINDOW], ply->background);
- XSetForeground(dpy, ply->gc[INFOWINDOW], ply->foreground);
-
- /* get a nice cool font for display. */
- if((ply->font_struct = XLoadQueryFont(ply->display, CoolFont)) != NULL) {
- XSetFont(ply->display, ply->gc[INFOWINDOW], ply->font_struct->fid);
- XSetFont(ply->display, ply->gc[TITLEWINDOW], ply->font_struct->fid);
- }
- else
- {
- printf ("Xgosh failed to XLoadQueryFont \"%s\"\n", CoolFont);
- exit (EXIT_FAILURE);
- }
- if
- ((ply->bold_font_struct = XLoadQueryFont(ply->display, BoldCoolFont)) != NULL)
- {}
- else
- {
- printf ("Xgosh failed to XLoadQueryFont \"%s\"\n", BoldCoolFont);
- exit (EXIT_FAILURE);
- }
- ply->gc[3] = XCreateGC(dpy, ply->window[BOARDWINDOW],0,0);
- XSetBackground(dpy, ply->gc[3], ply->background);
- XSetForeground(dpy, ply->gc[3], ply->foreground);
- ply->GreyPixmap = XCreateBitmapFromData(dpy, ply->window[BOARDWINDOW], gray_bits,
- gray_width, gray_height);
- XSetStipple(dpy, ply->gc[3], ply->GreyPixmap);
- XSetFillStyle(dpy, ply->gc[3], FillOpaqueStippled);
-
- if(ply->color == WHITE) {
- ply->MouseStone =
- XCreatePixmapFromBitmapData(dpy, ply->window[BOARDWINDOW], whitestone_bits,
- whitestone_width, whitestone_height, ply->foreground,
- ply->background, 1);
- ply->MouseStoneMask =
- XCreatePixmapFromBitmapData(dpy, ply->window[BOARDWINDOW], whitestonemask_bits,
- whitestonemask_width, whitestonemask_height,
- ply->foreground, ply->background, 1);
- ply->StoneCursor =
- XCreatePixmapCursor(dpy, ply->MouseStone, ply->MouseStoneMask, &fg, &bg,
- whitestone_x_hot, whitestone_y_hot);
- } else {
- ply->MouseStone =
- XCreatePixmapFromBitmapData(dpy, ply->window[BOARDWINDOW], blackstone_bits,
- blackstone_width, blackstone_height, ply->foreground,
- ply->background, 1);
- ply->MouseStoneMask =
- XCreatePixmapFromBitmapData(dpy, ply->window[BOARDWINDOW], blackstonemask_bits,
- blackstonemask_width, blackstonemask_height,
- ply->foreground, ply->background, 1);
- ply->StoneCursor =
- XCreatePixmapCursor(dpy, ply->MouseStone, ply->MouseStoneMask, &fg, &bg,
- blackstone_x_hot, blackstone_y_hot);
- }
- XDefineCursor(dpy, ply->window[TITLEWINDOW], ply->StoneCursor);
- XDefineCursor(dpy, ply->window[INFOWINDOW], ply->StoneCursor);
- XDefineCursor(dpy, ply->window[BOARDWINDOW], ply->StoneCursor);
-
- DEBUG("OpenDisplay", OUT);
- }
-
- /*****************************************************************************/
-
- usage(s)
- char *s;
- {
- printf("usage: %s [-options ...]\n\n", s);
- printf("where options include:\n");
- printf(" -whitedisplay dpy X server on which to display white player.\n");
- printf(" -blackdisplay dpy X server on which to display black player.\n");
- printf(" -whitegeometry WxH+X+Y size and location of white player's window.\n");
- printf(" -blackgeometry WxH+X+Y size and location of black player's window.\n");
- printf(" -handicap number number of black handicap stones. [0]\n");
- printf(" -loadfile filename filename to load in.\n");
- printf(" -savefile filename filename to save under.\n");
- printf(" -blacktime time Black's playing timer (in seconds.)\n");
- printf(" -whitetime time White's playing timer (in seconds.)\n");
- printf(" -graystipple A gray board color. \n");
- printf(" -boardcolor color The color of the board. [tan1]. \n");
- printf(" -beep Sound a beep after opponent's move. \n");
- printf(" -singledisplay use only one display. \n");
- printf(" -size x y Size of the game board. [19 19] MAX[%d %d]\n",MAXX, MAXY);
- printf(" -usage this description.\n\n");
- }
-
- int WhichPlayer(display, Players, n)
- Display *display;
- struct PLAYER Players[];
- int n;
- {
- int i;
- for(i=0; i<n; i++)
- if(Players[i].display == display)
- return(i);
-
- return(-1);
- }
-
-
- FullRedraw(Player, ndisplays, type)
- struct PLAYER Player[];
- int type; /* type of redraw */
- {
- XExposeEvent xexpose;
-
- xexpose.type = Expose;
- xexpose.x = xexpose.y = xexpose.width = xexpose.height = 0;
- xexpose.count = 0;
- FORI(ndisplays, xexpose.display = Player[I].display;
- if(type == MAINWINDOW || type == BOARDWINDOW) {
- xexpose.window = Player[I].window[BOARDWINDOW];
- XSendEvent(Player[I].display, Player[I].window[BOARDWINDOW], FALSE,
- ExposureMask, (XEvent *)&xexpose);
- }
- if(type == MAINWINDOW || type == INFOWINDOW) {
- xexpose.window = Player[I].window[INFOWINDOW];
- XSendEvent(Player[I].display, Player[I].window[INFOWINDOW], FALSE,
- ExposureMask, (XEvent *)&xexpose);
- }
- );
- }
-
- int Turn;
- time_t starttimer,endtimer;
- time_t timers[2];
- int ndisplays; /* the number of working displays to display to. */
- int lastmovecolor;
- MoveTree *lastmove;
- struct PLAYER Player[2];
- int Mode; /* mode of operation. */
-
- /*****************************************************************************/
- /*****************************************************************************/
- /*****************************************************************************/
-
- timeout_handler ()
- {
- if(Mode == PLAYMODE) {
- if(lastmove != NULL) {
- FORI(ndisplays, DrawCross(Player[I].display, Player[I].window[BOARDWINDOW],
- Player[I].gc[2],
- Player[I].foreground, Player[I].background,
- GridToScrn(lastmove->x, Player[I].ox, Player[I].dx),
- GridToScrn(lastmove->y, Player[I].oy, Player[I].dy),
- Player[I].dx, Player[I].dy, lastmovecolor); );
- lastmovecolor = other(lastmovecolor);
- }
-
- time(&endtimer);
- if((endtimer - starttimer) > 0) {
- FORI(ndisplays,
- XSetForeground(Player[I].display, Player[I].gc[INFOWINDOW], Player[I].background);
- if(Turn == WHITE)
- UpdateTimer(Player[I].display, Player[I].window[INFOWINDOW], Player[I].gc[INFOWINDOW],
- BlackTimerPos, InfoHeight/2, InfoWidth, InfoHeight, timers[WHITE]);
- else
- UpdateTimer(Player[I].display, Player[I].window[INFOWINDOW], Player[I].gc[INFOWINDOW],
- WhiteTimerPos, InfoHeight/2, InfoWidth, InfoHeight, timers[BLACK]);
- );
- timers[Turn] -= endtimer - starttimer;
- time(&starttimer);
- FORI(ndisplays,
- XSetForeground(Player[I].display, Player[I].gc[INFOWINDOW], Player[I].foreground);
- if(Turn == WHITE)
- UpdateTimer(Player[I].display, Player[I].window[INFOWINDOW], Player[I].gc[INFOWINDOW],
- BlackTimerPos, InfoHeight/2, InfoWidth, InfoHeight, timers[WHITE]);
- else
- UpdateTimer(Player[I].display, Player[I].window[INFOWINDOW], Player[I].gc[INFOWINDOW],
- WhiteTimerPos, InfoHeight/2, InfoWidth, InfoHeight, timers[BLACK]);
- );
- }
- }
- XtAppAddTimeOut (app_context, 300, timeout_handler, 0);
- }
-
- main(argc, argv)
- int argc;
- char **argv;
- {
- int i;
- char *whitegeometry, *blackgeometry;
- char *whitedisplay, *blackdisplay;
- char *boardcolor;
- Board board;
- int handicap;
- int ply;
- int x,y, offset;
- int greystipple;
- char text[255];
- KeySym key;
- int cbs, cws;
-
- XEvent event;
- XtInputMask whats_ready;
- /*
- fd_set mask, readfds, wrfds, exfds;
- struct timeval timeout;
- */
- int nfds;
- int nfound;
- int done;
- int dpc; /* connection file pointer. */
- int beep;
- char savefile[81];
- char loadfile[81];
- int whitepoints, blackpoints, undet;
-
- XExposeEvent xexpose;
- DEBUG("main", IN);
-
- global_argc = argc;
- global_argv = argv;
-
- XtToolkitInitialize();
- app_context = XtCreateApplicationContext();
-
- timers[WHITE] = 1800;
- timers[BLACK] = 1800;
- greystipple = FALSE;
- beep = FALSE;
- whitedisplay = 0L;
- blackdisplay = 0L;
- whitegeometry = 0L;
- blackgeometry = 0L;
- handicap = 0;
- lastmove = NULL;
- ndisplays = 2;
- strcpy(loadfile,"");
- strcpy(savefile,"");
-
- board.sizex = 19;
- board.sizey = 19;
- boardcolor = 0L;
-
- x=1;
- while(x<argc) {
- if(!strcmp(argv[x], "-whitedisplay")) {
- whitedisplay = argv[x+1];
- x+=2;
- } else if(!strcmp(argv[x], "-blackdisplay")) {
- blackdisplay = argv[x+1];
- x+=2;
- } else if(!strcmp(argv[x], "-whitegeometry")) {
- whitegeometry = argv[x+1];
- x+=2;
- } else if(!strcmp(argv[x], "-blacktime")) {
- sscanf(argv[x+1], "%ld", &timers[BLACK]);
- x+=2;
- } else if(!strcmp(argv[x], "-whitetime")) {
- sscanf(argv[x+1], "%ld", &timers[WHITE]);
- x+=2;
- } else if(!strcmp(argv[x], "-blackgeometry")) {
- blackgeometry = argv[x+1];
- x+=2;
- } else if(!strcmp(argv[x], "-boardcolor")) {
- boardcolor = argv[x+1];
- x+=2;
- } else if(!strcmp(argv[x], "-handicap")) {
- sscanf(argv[x+1], "%d", &handicap);
- x+=2;
- } else if(!strcmp(argv[x], "-size")) {
- sscanf(argv[x+1], "%d", &(board.sizex));
- sscanf(argv[x+2], "%d", &(board.sizey));
- if(board.sizex > MAXX || board.sizey > MAXY || (board.sizex <= 1 && board.sizey <= 1)) {
- printf("%s: illegal size of board\n", argv[0]);
- exit(1);
- }
- x+=3;
- } else if(!strcmp(argv[x], "-loadfile")) {
- strcpy(loadfile, argv[x+1]);
- x+=2;
- } else if(!strcmp(argv[x], "-savefile")) {
- strcpy(savefile, argv[x+1]);
- x+=2;
- } else if(!strcmp(argv[x], "-usage")) {
- usage(argv[0]);
- x++;
- exit(0);
- } else if(!strcmp(argv[x], "-graystipple")) {
- greystipple = TRUE;
- x++;
- } else if(!strcmp(argv[x], "-singledisplay")) {
- ndisplays = 1;
- x++;
- } else if(!strcmp(argv[x], "-beep")) {
- beep = TRUE;
- x++;
- } else {
- printf("%s: Error in arguments!\n", argv[0]);
- usage(argv[0]);
- exit(0);
- }
- }
-
- board.handicap = handicap;
- InitPlayBoard(&board);
-
- board.movetree = InitMoveTree();
-
- if(board.handicap>0)
- Turn = WHITE;
- else
- Turn = BLACK;
-
- if(strcmp(loadfile,"")) {
- lastmove = LoadMoves(&board, loadfile);
- Turn = other(board.movetree->next->color);
- } else
- strcpy(loadfile,"go.save");
-
- if(strcmp(savefile,"")==0)
- strcpy(savefile,"go.save");
-
- Player[WHITE].color = WHITE;
- Player[BLACK].color = BLACK;
-
- if(whitedisplay==0L) {
- OpenDisplay(&Player[WHITE], "", whitegeometry, boardcolor, board.sizex, board.sizey);
- whitedisplay = XDisplayString(Player[WHITE].display);
- }
- else
- OpenDisplay(&Player[WHITE], whitedisplay, whitegeometry, boardcolor, board.sizex, board.sizey);
-
- if(ndisplays > 1) {
- if(blackdisplay==0L) {
- OpenDisplay(&Player[BLACK], "", blackgeometry, boardcolor, board.sizex, board.sizey);
- blackdisplay = XDisplayString(Player[BLACK].display);
- }
- else
- OpenDisplay(&Player[BLACK], blackdisplay, blackgeometry, boardcolor, board.sizex, board.sizey);
- }
-
- /*****************************************************************************/
-
- /*
- timeout.tv_sec = 0;
- timeout.tv_usec = 300000;
- FD_ZERO(&mask);
-
- FORI(ndisplays, dpc = ConnectionNumber(Player[I].display);
- FD_SET(dpc, &mask); );
- nfds = getdtablesize();
- */
- time(&starttimer);
-
- /*****************************************************************************/
- Mode = TITLEMODE;
- Player[WHITE].Mode = TITLEMODE;
- Player[BLACK].Mode = TITLEMODE;
-
- done = FALSE;
-
- XtAppAddTimeOut (app_context, 300, timeout_handler, 0);
-
- while(!done) {
-
- XtAppNextEvent (app_context, &event); /* block until event */
-
- switch(event.type) {
- case Expose:
- DEBUG("Expose", IN);
-
- ply = WhichPlayer(event.xexpose.display, Player, ndisplays);
- if(event.xexpose.count == 0 && event.xexpose.window == Player[ply].window[TITLEWINDOW]) {
- XCopyPlane(Player[ply].display, Player[ply].TitlePixmap, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW],
- 0, 0, noname_width, noname_height, TITLE_BORDER, TITLE_BORDER, 1);
-
- x = TITLE_BORDER;
- y = noname_height + TITLE_BORDER*2;
-
- sprintf(text, "xgosh version: %s", VERSION);
- offset = DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
-
- y += offset;
- if(ndisplays>1) {
- if(ply==WHITE)
- sprintf(text, "Player: White");
- else
- sprintf(text, "Player: Black");
- } else
- sprintf(text, "Player: White and Black");
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
-
- sprintf(text, "handicap: %d", board.handicap);
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[INFOWINDOW], x, y,
- text, Player[ply].font_struct);
-
- y += offset;
- sprintf(text, "board size: %dx%d", board.sizex, board.sizey);
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
-
- if(ndisplays > 1) {
- y += offset;
- sprintf(text, "WhiteDisplay: %s", whitedisplay);
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
- y += offset;
- sprintf(text, "BlackDisplay: %s", blackdisplay);
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
- } else {
- y += offset;
- sprintf(text, "Display: %s", whitedisplay);
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
- }
- y+=offset*2;
- x+=50;
- sprintf(text, "Click on window to begin play...");
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
-
- x = noname_width/2 + TITLE_BORDER*2;
- y = noname_height + TITLE_BORDER*2;
-
- y += offset;
- sprintf(text, "Whitetime: %d", timers[WHITE]);
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
- y += offset;
- sprintf(text, "Blacktime: %d", timers[BLACK]);
- DrawInfoText(Player[ply].display, Player[ply].window[TITLEWINDOW],
- Player[ply].gc[TITLEWINDOW], x, y,
- text, Player[ply].font_struct);
-
-
- XFlush(Player[ply].display);
- }
- if(event.xexpose.count == 0 && event.xexpose.window == Player[ply].window[BOARDWINDOW]) {
- XSetForeground(Player[ply].display, Player[ply].gc[2], Player[ply].foreground);
- if(greystipple) {
- XFillRectangle(Player[ply].display, Player[ply].window[BOARDWINDOW], Player[ply].gc[3],
- 0, 0, Player[ply].hint[BOARDWINDOW].width,
- Player[ply].hint[BOARDWINDOW].height);
- } else {
- XSetForeground(Player[ply].display, Player[ply].gc[2], Player[ply].boardcolor);
- XFillRectangle(Player[ply].display, Player[ply].window[BOARDWINDOW], Player[ply].gc[2],
- 0, 0, Player[ply].hint[BOARDWINDOW].width,
- Player[ply].hint[BOARDWINDOW].height);
- XSetForeground(Player[ply].display, Player[ply].gc[2], Player[ply].foreground);
- }
- GetMeasures(&board, Player[ply].hint[BOARDWINDOW].width,
- Player[ply].hint[BOARDWINDOW].height,
- &(Player[ply].dx), &(Player[ply].dy), &(Player[ply].ox), &(Player[ply].oy));
-
- DrawBoard(Player[ply].display, Player[ply].window[BOARDWINDOW], Player[ply].gc[2],
- Player[ply].foreground, Player[ply].background, &board, Player[ply].dx,
- Player[ply].dy, Player[ply].ox, Player[ply].oy);
-
- DrawAllPieces(Player[ply].display, Player[ply].window[BOARDWINDOW], Player[ply].gc[2],
- Player[ply].foreground, Player[ply].background, &board, Player[ply].dx,
- Player[ply].dy, Player[ply].ox, Player[ply].oy);
-
- }
- if(event.xexpose.count == 0 && event.xexpose.window == Player[ply].window[INFOWINDOW]) {
- CountCapturedStones(&board, &cbs, &cws);
-
- sprintf(text, "Captured Stones: White(%d) Black(%d)", cbs, cws);
-
- DrawTimer(Player[ply].display, Player[ply].window[INFOWINDOW], Player[ply].gc[INFOWINDOW],
- Player[ply].foreground, Player[ply].background, BlackTimerPos,
- InfoHeight/2, InfoWidth, InfoHeight);
- DrawTimer(Player[ply].display, Player[ply].window[INFOWINDOW], Player[ply].gc[INFOWINDOW],
- Player[ply].foreground, Player[ply].background, WhiteTimerPos, InfoHeight/2,
- InfoWidth, InfoHeight);
-
- UpdateTimer(Player[ply].display, Player[ply].window[INFOWINDOW], Player[ply].gc[INFOWINDOW],
- BlackTimerPos, InfoHeight/2, InfoWidth, InfoHeight, timers[WHITE]);
- UpdateTimer(Player[ply].display, Player[ply].window[INFOWINDOW], Player[ply].gc[INFOWINDOW],
- WhiteTimerPos, InfoHeight/2, InfoWidth, InfoHeight, timers[BLACK]);
-
- DrawInfoText(Player[ply].display, Player[ply].window[INFOWINDOW],
- Player[ply].gc[INFOWINDOW], MESS_OFF_X, MESS_OFF_Y,
- text, Player[ply].font_struct);
-
- DrawTurnMarkers(Player[ply].display, Player[ply].window[INFOWINDOW], Player[ply].gc[INFOWINDOW],
- Player[ply].foreground, Player[ply].background,
- InfoWidth, InfoHeight, Turn);
-
- XFlush(Player[ply].display);
- }
- DEBUG("Expose", OUT);
- break;
-
- case ConfigureNotify:
- DEBUG("ConfigureNotify", IN);
- ply = WhichPlayer(event.xconfigure.display, Player, ndisplays);
- if(event.xconfigure.window == Player[ply].window[BOARDWINDOW]) {
- Player[ply].hint[BOARDWINDOW].x = event.xconfigure.x;
- Player[ply].hint[BOARDWINDOW].y = event.xconfigure.y;
- Player[ply].hint[BOARDWINDOW].width = event.xconfigure.width;
- Player[ply].hint[BOARDWINDOW].height = event.xconfigure.height;
- /* if(event.xconfigure.width != event.xconfigure.height) {
- Player[ply].hint[BOARDWINDOW].width = MIN(event.xconfigure.width, event.xconfigure.height);
- Player[ply].hint[BOARDWINDOW].height = MIN(event.xconfigure.height, event.xconfigure.width);
- XResizeWindow(Player[ply].display, Player[ply].window[BOARDWINDOW],
- Player[ply].hint[BOARDWINDOW].width,
- Player[ply].hint[BOARDWINDOW].height);
- }*/
- } else if(event.xconfigure.window == Player[ply].window[INFOWINDOW]) {
- Player[ply].hint[INFOWINDOW].x = event.xconfigure.x;
- Player[ply].hint[INFOWINDOW].y = event.xconfigure.y;
- Player[ply].hint[INFOWINDOW].width = event.xconfigure.width;
- Player[ply].hint[INFOWINDOW].height = event.xconfigure.height;
- }
- DEBUG("ConfigureNotify", OUT);
- break;
-
- case MappingNotify:
- XRefreshKeyboardMapping((XMappingEvent *)&event);
- break;
-
- case ButtonPress:
- DEBUG("ButtonPress Event!", IN);
- ply = WhichPlayer(event.xbutton.display, Player, ndisplays);
- if(event.xbutton.window == Player[ply].window[TITLEWINDOW]) {
- if(Player[ply].Mode == TITLEMODE)
- Player[ply].Mode = PLAYMODE;
- if(ndisplays==1 || Player[other(ply)].Mode == PLAYMODE) {
- Mode = PLAYMODE;
- FORI(ndisplays,
- XUnmapWindow(Player[I].display, Player[I].window[TITLEWINDOW]);
- XMapWindow(Player[I].display, Player[I].window[BOARDWINDOW]);
- XMapWindow(Player[I].display, Player[I].window[INFOWINDOW]); );
- time(&starttimer);
- }
- }
- if(Mode == KILLMODE && event.xbutton.window == Player[ply].window[BOARDWINDOW]) {
- if(event.xbutton.button == Button1) {
- if(Turn == ply || ndisplays == 1) {
- if(FigureMouseClick(&board, event.xbutton.x, event.xbutton.y, Player[ply].dx,
- Player[ply].dy, Player[ply].ox, Player[ply].oy, &x, &y) == TRUE) {
-
- if(GetStone(&board, x, y) != EMPTY) {
- AddNewNode(board.movetree, KILL, KILL, KILL);
- KillStones(&board, x, y, GetStone(&board, x, y));
- FullRedraw(Player, ndisplays, MAINWINDOW);
- } else
- XBell(Player[ply].display, 20);
- } else
- XBell(Player[ply].display, 20);
- }
- }
- }
- if(Mode == PLAYMODE && event.xbutton.window == Player[ply].window[BOARDWINDOW]) {
- if(event.xbutton.button == Button1) {
- if(Turn == ply || ndisplays == 1) {
- if(FigureMouseClick(&board, event.xbutton.x, event.xbutton.y, Player[ply].dx,
- Player[ply].dy, Player[ply].ox, Player[ply].oy, &x, &y) == TRUE) {
- if(GetStone(&board, x, y) == EMPTY) {
- MoveTree *temp;
- AddStone(&board, x, y, Turn);
- temp = AddNewNode(board.movetree, x, y, Turn);
- if(PlaceStoneOnBoard(&board, x, y, Turn) == 0) {
- XBell(Player[ply].display, 20);
- AddStone(&board, x, y, EMPTY);
- DeleteNode(board.movetree);
- } else if(lastmove != NULL &&
- (Length(temp->kill) == 1) &&
- (Length(lastmove->kill) == 1) &&
- lastmove->x == temp->kill->next->x &&
- lastmove->y == temp->kill->next->y &&
- lastmove->color == temp->kill->next->color &&
- lastmove->kill->next->x == temp->x &&
- lastmove->kill->next->y == temp->y &&
- lastmove->kill->next->color == temp->color) {
- UndoLastMove(&board);
- sprintf(text, "Illegal Move: KO!");
-
- DrawInfoText(Player[ply].display, Player[ply].window[INFOWINDOW],
- Player[ply].gc[INFOWINDOW], MESS_OFF_X, MESS_OFF_Y,
- text, Player[ply].font_struct);
-
- XBell(Player[ply].display, 20);
- }
- else {
- if(lastmove != NULL)
- FORI(ndisplays, DrawCross(Player[I].display, Player[I].window[BOARDWINDOW],
- Player[I].gc[2],
- Player[I].foreground, Player[I].background,
- GridToScrn(lastmove->x, Player[I].ox, Player[I].dx),
- GridToScrn(lastmove->y, Player[I].oy, Player[I].dy),
- Player[I].dx, Player[I].dy, other(lastmove->color)); );
- lastmove = temp; /* keep track of the last move played. */
- lastmovecolor = lastmove->color;
- if(!IsEmpty(board.movetree->next->kill)) {
- FullRedraw(Player, ndisplays, MAINWINDOW);
- Turn = other(Turn);
- } else {
- FORI(ndisplays,
- DrawStoneOnBoard(Player[I].display, Player[I].window[BOARDWINDOW],
- Player[I].gc[2],
- Player[I].foreground, Player[I].background,
- x, y, Player[I].dx,
- Player[I].dy, Player[I].ox, Player[I].oy, Turn);
- DrawTurnMarkers(Player[I].display, Player[I].window[INFOWINDOW],
- Player[I].gc[INFOWINDOW],
- Player[I].foreground, Player[I].background,
- InfoWidth, InfoHeight, other(Turn)); );
-
- /* re-draw the information window after a valid move occurs. */
-
- FullRedraw(Player, ndisplays, INFOWINDOW);
-
- Turn = other(Turn);
- }
- if(beep)
- XBell(Player[other(ply)].display, 50);
- }
- } else {
- XBell(Player[ply].display, 20);
- }
- } else {
- XBell(Player[ply].display,20);
- }
- } else {
- XBell(Player[ply].display,20);
- }
- }
- }
- DEBUG("ButtonPress Event!", OUT);
- break;
-
- case KeyPress:
- DEBUG("KeyPress", IN);
- i = XLookupString((XKeyEvent *) &event, text, 10, &key, 0);
-
- if(i==1 && Mode == TITLEMODE) {
- switch(text[0]) {
- case 'q': /* Quit game */
- done = TRUE;
- break;
- }
- } else if(i==1 && Mode == KILLMODE) {
- switch(text[0]) {
- case 'k': /* kill mode. */
- if(Mode == KILLMODE){
- Mode = PLAYMODE;
- sprintf(text, "KillMode Cleared. Playmode.");
- FORI(ndisplays,
- XBell(Player[I].display, 20);
- DrawInfoText(Player[I].display, Player[I].window[INFOWINDOW],
- Player[I].gc[INFOWINDOW],
- MESS_OFF_X, MESS_OFF_Y,
- text, Player[I].font_struct); );
- }
- }
- } else if(i==1 && Mode == PLAYMODE) {
- switch(text[0]) {
- case 'u': /* Undo move */
- if(!IsEmpty(board.movetree->next)) {
-
- UndoLastMove(&board);
- lastmove = board.movetree->next;
- Turn = other(Turn);
- FullRedraw(Player, ndisplays, MAINWINDOW);
-
- if(Turn==BLACK)
- sprintf(text, "Black Player takes back a move.");
- else if(Turn==WHITE)
- sprintf(text, "White Player takes back a move.");
-
- FORI(ndisplays,
- DrawInfoText(Player[I].display, Player[I].window[INFOWINDOW],
- Player[I].gc[INFOWINDOW], MESS_OFF_X, MESS_OFF_Y,
- text, Player[I].font_struct); );
- } else {
- FORI(ndisplays,
- XBell(Player[I].display, 20););
- }
- break;
- case 'p': /* pass */
- if(Turn == ply || ndisplays == 1) {
- AddNewNode(board.movetree, PASS, PASS, PASS);
-
- if(Turn==BLACK)
- sprintf(text, "Black Player passed.");
- else if(Turn==WHITE)
- sprintf(text, "White Player passed.");
-
- FORI(ndisplays,
- XBell(Player[I].display, 20);
- DrawInfoText(Player[I].display, Player[I].window[INFOWINDOW],
- Player[I].gc[INFOWINDOW], MESS_OFF_X, MESS_OFF_Y,
- text, Player[I].font_struct);
- DrawTurnMarkers(Player[I].display, Player[I].window[INFOWINDOW], Player[I].gc[INFOWINDOW],
- Player[I].foreground, Player[I].background,
- InfoWidth, InfoHeight, Turn); );
- Turn = other(Turn);
- }
- break;
- case 'q': /* Quit game */
- done = TRUE;
- break;
- case 's': /* Save file */
- sprintf(text, "Saved game in file %s.", savefile);
-
- FORI(ndisplays,
- DrawInfoText(Player[I].display, Player[I].window[INFOWINDOW],
- Player[I].gc[INFOWINDOW], MESS_OFF_X, MESS_OFF_Y,
- text, Player[I].font_struct); );
-
- SaveMoves(&board, savefile);
- break;
- case 'k': /* KillMode Set */
- Mode = KILLMODE;
- sprintf(text, "KillMode Set.");
- FORI(ndisplays,
- XBell(Player[I].display, 20);
- DrawInfoText(Player[I].display, Player[I].window[INFOWINDOW],
- Player[I].gc[INFOWINDOW],
- MESS_OFF_X, MESS_OFF_Y,
- text, Player[I].font_struct); );
- break;
-
- case 'c': /* Calculate */
- CountCapturedStones(&board, &cbs, &cws);
- CalcuBoard(&board, &whitepoints, &blackpoints, &undet);
- sprintf(text, "Black: %d+%d=%d -- White: %d+%d=%d -- U: %d ",
- blackpoints,cws,blackpoints+cws,
- whitepoints,cbs,whitepoints+cbs+handicap,
- undet);
- FORI(ndisplays,
- XBell(Player[I].display, 20);
- DrawInfoText(Player[I].display, Player[I].window[INFOWINDOW],
- Player[I].gc[INFOWINDOW],
- MESS_OFF_X, MESS_OFF_Y,
- text, Player[I].font_struct); );
- break;
- case 'l': /* Load file */
- DestroyMoveTree(board.movetree);
- lastmove = LoadMoves(&board, loadfile);
- Turn = board.movetree->next->color;
-
- FullRedraw(Player, ndisplays, MAINWINDOW);
-
- Turn = other(Turn);
- break;
- }
- }
- DEBUG("KeyPress", OUT);
- break;
- } /* end of switch (event.type) */
-
- } /* end of while (!done) */
-
- DEBUG("main", OUT);
- } /* end of main() */
-
- SHAR_EOF
- fi
- if test -f 'xgosh_title.bm'
- then
- echo shar: "will not over-write existing file 'xgosh_title.bm'"
- else
- cat << \SHAR_EOF > 'xgosh_title.bm'
- #define noname_width 454
- #define noname_height 189
- static char noname_bits[] = {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x3f,0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0x07,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0x00,0xf0,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x1f,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x7f,0x00,0xf8,0x01,0x00,0xf8,0xff,
- 0xff,0xff,0x3f,0xc0,0xff,0xff,0xff,0xff,0x01,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x80,0xff,0xff,0xff,0xff,0x07,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfe,0xff,
- 0xff,0x0f,0xf8,0x01,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xff,0x03,0xfc,0x01,0x00,0xf8,0xff,0xff,0xff,0x3f,
- 0xc0,0xff,0xff,0xff,0xff,0x01,0x00,0x40,0x3f,0xbf,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0x07,0xff,0xff,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0x3f,0xfc,
- 0x01,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0x1f,0xfc,0x03,0x00,0xf8,0xff,0xff,0xff,0x3f,0xe0,0xff,0xff,
- 0xff,0xff,0x01,0x00,0x40,0x3f,0xbf,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x07,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0xfd,0x01,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,
- 0x7f,0xfc,0x03,0x00,0xf8,0xff,0xff,0xff,0x3f,0xe0,0xff,0xff,0xff,0xff,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x87,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xe0,0xff,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x03,
- 0x00,0xf8,0xff,0xff,0xff,0x3f,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,
- 0x7f,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,
- 0xff,0xff,0x1f,0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0xc0,0xff,0xff,0xff,0xff,0x83,0xff,0xff,0xff,0x1f,0x00,0x00,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0x1f,
- 0xe0,0xff,0xff,0xff,0xff,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0xc0,0xff,0xff,
- 0xff,0xff,0x83,0xff,0xff,0xff,0x1f,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,0xf0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xfc,0xff,0xff,0xff,0x1f,0xe0,0xff,0xff,
- 0xff,0xff,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0xff,0xff,0xff,0x1f,0x00,
- 0xf0,0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0x1f,0xe0,0xff,0xff,0x03,0x00,0x00,
- 0x80,0xff,0xff,0x1f,0xf0,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,0xff,0x01,0xf8,
- 0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0xff,0x01,0x00,0xfe,0xff,0xff,0x07,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0xf8,0xff,0xff,0x0f,0x00,0xe0,0xff,0x3f,
- 0x00,0x00,0xe0,0xff,0xff,0x03,0x00,0xff,0xff,0x07,0x00,0x00,0xc0,0xff,0xff,
- 0x03,0x80,0xff,0xff,0x07,0x00,0x00,0xfc,0xff,0x3f,0x00,0xc0,0xff,0xff,0x03,
- 0x00,0x00,0xff,0xff,0x3f,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0xe0,0xff,0xff,0x07,0x00,0xe0,0xff,0x0f,0x00,0x00,0xf0,
- 0xff,0xff,0x01,0x00,0xfc,0xff,0x07,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0xff,
- 0xff,0x0f,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0xff,0xff,0x03,0x00,0x00,0xfe,
- 0xff,0x1f,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0xc0,0xff,0xff,0x07,0x00,0xe0,0xff,0x03,0x00,0x00,0xf8,0xff,0x7f,0x00,
- 0x00,0xf8,0xff,0x07,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0xfc,0xff,0x1f,0x00,
- 0x00,0xfe,0xff,0x07,0x00,0x00,0xfc,0xff,0x03,0x00,0x00,0xfe,0xff,0x0f,0x00,
- 0x00,0xf0,0xff,0x7f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x80,0xff,
- 0xff,0x0f,0x00,0xf0,0xff,0x01,0x00,0x00,0xfc,0xff,0x3f,0x00,0x00,0xf0,0xff,
- 0x07,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0xff,0xff,
- 0x03,0x00,0x00,0xf0,0xff,0x03,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0xf0,0xff,
- 0x3f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x00,
- 0xf8,0x7f,0x00,0x00,0x00,0xfe,0xff,0x1f,0x00,0x00,0xe0,0xff,0x07,0x00,0x00,
- 0xfc,0xff,0x1f,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0xff,0xff,0x03,0x00,0x00,
- 0xe0,0xff,0x03,0x00,0x00,0xfe,0xff,0x07,0x00,0x00,0xf0,0xff,0x3f,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xfe,0xff,0x1f,0x00,0xfc,0x3f,0x00,
- 0x00,0x00,0xff,0xff,0x0f,0x00,0x00,0xc0,0xff,0x07,0x00,0x00,0xfe,0xff,0x0f,
- 0x00,0x00,0xf0,0xff,0x7f,0x00,0x80,0xff,0xff,0x01,0x00,0x00,0xc0,0xff,0x03,
- 0x00,0x00,0xfe,0xff,0x07,0x00,0x00,0xf0,0xff,0x3f,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0xfe,0xff,0x1f,0x00,0xfe,0x1f,0x00,0x00,0x00,0xff,
- 0xff,0x07,0x00,0x00,0x80,0xff,0x0f,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0xf0,
- 0xff,0x7f,0x00,0x80,0xff,0xff,0x01,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0xfe,
- 0xff,0x07,0x00,0x00,0xf0,0xff,0x1f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0x3f,0x00,0xff,0x0f,0x00,0x00,0x80,0xff,0xff,0x03,0x00,
- 0x00,0x00,0xff,0x0f,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0xe0,0xff,0xff,0x00,
- 0x80,0xff,0xff,0x01,0x00,0x00,0x80,0xff,0x03,0x00,0x00,0xfe,0xff,0x07,0x00,
- 0x00,0xf0,0xff,0x1f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0x3f,0x00,0xff,0x07,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0x00,0x00,0xfe,
- 0x0f,0x00,0x80,0xff,0xff,0x03,0x00,0x00,0xe0,0xff,0xff,0x00,0x80,0xff,0xff,
- 0x01,0x00,0x00,0x00,0xff,0x03,0x00,0x00,0xfe,0xff,0x07,0x00,0x00,0xf0,0xff,
- 0x1f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xf8,0xff,0x7f,0x80,
- 0xff,0x03,0x00,0x00,0xc0,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0x0f,0x00,0x80,
- 0xff,0xff,0x03,0x00,0x00,0xc0,0xff,0xff,0x00,0x80,0xff,0xff,0x03,0x00,0x00,
- 0x00,0xfe,0x03,0x00,0x00,0xfe,0xff,0x03,0x00,0x00,0xf8,0xff,0x1f,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0xc0,0xff,0x03,0x00,
- 0x00,0xe0,0xff,0xff,0x00,0x00,0x00,0x00,0xfc,0x0f,0x00,0xc0,0xff,0xff,0x01,
- 0x00,0x00,0xc0,0xff,0xff,0x01,0x80,0xff,0xff,0x03,0x00,0x00,0x00,0xfe,0x03,
- 0x00,0x00,0xfe,0xff,0x03,0x00,0x00,0xf8,0xff,0x1f,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0xf0,0xff,0xff,0xe0,0xff,0x01,0x00,0x00,0xe0,0xff,
- 0xff,0x00,0x00,0x00,0x00,0xf8,0x0f,0x00,0xc0,0xff,0xff,0x01,0x00,0x00,0xc0,
- 0xff,0xff,0x01,0xc0,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,0x03,0x00,0x00,0xff,
- 0xff,0x03,0x00,0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0xf1,0xff,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,
- 0x00,0x00,0xf8,0x1f,0x00,0xe0,0xff,0xff,0x00,0x00,0x00,0xc0,0xff,0xff,0x01,
- 0xc0,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0x03,0x00,0x00,0xff,0xff,0x03,0x00,
- 0x00,0xf8,0xff,0x0f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0xf9,0x7f,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0x00,0x00,0xf0,
- 0x1f,0x00,0xe0,0xff,0xff,0x00,0x00,0x00,0xc0,0xff,0xff,0x01,0xc0,0xff,0xff,
- 0xff,0x03,0x00,0x00,0xf8,0x03,0x00,0x00,0xff,0xff,0x03,0x00,0x00,0xf8,0xff,
- 0x0f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0xf8,0xff,0x7f,0x00,0x00,0x00,0x00,0xf0,0x1f,0x00,0xf0,
- 0xff,0x7f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0xc0,0xff,0xff,0xff,0x3f,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x01,0x00,0x00,0xf8,0xff,0x0f,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0x00,0xe0,0x07,0x00,0xf0,0xff,0x7f,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0x03,0x80,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,
- 0x00,0x00,0xff,0xff,0x01,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xfc,0xff,
- 0x3f,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0xf8,0xff,0x7f,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0x03,0x80,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x80,0xff,
- 0xff,0x01,0x00,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x80,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,
- 0x80,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x80,0xff,0xff,0x01,0x00,
- 0x00,0xfc,0xff,0x07,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0x07,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x80,0xff,0xff,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,
- 0x03,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,
- 0xff,0x3f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,
- 0x00,0xfe,0xff,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,
- 0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,0x00,0xfe,0xff,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0x03,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x80,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x07,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0xfc,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,
- 0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0xf8,0xff,0x7f,0x00,0x00,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0xf8,0xff,
- 0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0x00,0x00,0x00,0x00,0xff,0xff,0x0f,0x00,0x00,0xf8,0xff,0xff,0xff,0x07,0xfe,
- 0xff,0x1f,0x00,0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0xf0,0xff,0xff,0xff,0xff,
- 0xff,0x7f,0x00,0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0xfc,0xff,0xff,0x01,0x00,0x00,
- 0x00,0xff,0xff,0x0f,0x00,0x00,0xf8,0xff,0xff,0xff,0x07,0xfe,0xff,0x1f,0x00,
- 0x00,0x00,0xc0,0xff,0xff,0x03,0x00,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0x00,
- 0x00,0xc0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0xff,0xff,
- 0x07,0x00,0x00,0xfc,0xff,0xff,0xff,0x07,0xfe,0xff,0x0f,0x00,0x00,0x00,0xc0,
- 0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0xc0,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,
- 0xfc,0xff,0xff,0xff,0x03,0xfe,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,
- 0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0xe0,0xff,0x7f,0x00,0x00,
- 0x00,0xff,0xff,0x03,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x80,
- 0xff,0xff,0xff,0x03,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0xfc,0xff,0xff,
- 0xff,0x03,0xfe,0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0x00,0xf8,
- 0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,
- 0x01,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x80,0xff,0xff,0xff,
- 0x07,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0xfc,0xff,0xff,0xff,0x03,0xfe,
- 0xff,0x0f,0x00,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0x00,0xe0,0xff,0xff,0xff,
- 0xff,0xff,0x03,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,0x01,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0xff,0x07,0x00,0x00,
- 0x00,0xff,0xff,0x07,0x00,0x00,0xfc,0xff,0xff,0xff,0x03,0xfe,0xff,0x0f,0x00,
- 0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0xff,0x03,
- 0x00,0xe0,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0x01,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0x0f,0x00,0x00,0x00,0xff,0xff,
- 0x07,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,0xfe,0xff,0x0f,0x00,0x00,0x00,0xe0,
- 0xff,0xff,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,
- 0x3f,0x00,0x00,0x80,0xff,0xff,0x01,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,
- 0xf0,0xff,0xff,0x7f,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0x00,
- 0xe0,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x07,0x00,0xe0,0xff,0x3f,0x00,0x00,
- 0x80,0xff,0xff,0x01,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xf8,
- 0x7f,0xfe,0xff,0x1f,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0x80,0xff,0xff,
- 0x0f,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0xff,0x00,0xff,0x00,0x00,
- 0x00,0xe0,0xff,0xff,0xff,0x07,0x00,0xf0,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xfc,0x3f,0xfe,0xff,
- 0x3f,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0x00,0x00,0xff,0xff,0x07,0x00,0xfe,
- 0xff,0x0f,0x00,0x00,0x00,0xf0,0xff,0x7f,0x00,0xff,0x01,0x00,0x00,0x00,0xfe,
- 0xff,0xff,0x07,0x00,0xf0,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0xfe,0x1f,0xfc,0xff,0x3f,0x00,0x00,
- 0x00,0xff,0xff,0x07,0x00,0x00,0x00,0xfe,0xff,0x03,0x00,0xfe,0xff,0x0f,0x00,
- 0x00,0x00,0xf8,0xff,0x7f,0x00,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0x07,
- 0x00,0xf0,0xff,0x1f,0x00,0x00,0x80,0xff,0xff,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0xff,0x0f,0xfc,0xff,0x7f,0x00,0x00,0x00,0xff,0xff,
- 0x07,0x00,0x00,0x00,0xfe,0xff,0x01,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0xf8,
- 0xff,0x3f,0x00,0xfe,0x01,0x00,0x00,0x00,0xe0,0xff,0xff,0x07,0x00,0xf0,0xff,
- 0x1f,0x00,0x00,0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0xff,0x07,0xf8,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0x07,0x00,0x00,
- 0x00,0xfe,0xff,0x01,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,
- 0xfe,0x03,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0xf0,0xff,0x1f,0x00,0x00,
- 0xc0,0xff,0xff,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x80,0xff,
- 0x07,0xf8,0xff,0xff,0x00,0x00,0x00,0xfe,0xff,0x07,0x00,0x00,0x00,0xfe,0xff,
- 0x01,0x00,0xfc,0xff,0x0f,0x00,0x00,0x00,0xfc,0xff,0x1f,0x00,0xfe,0x07,0x00,
- 0x00,0x00,0x80,0xff,0xff,0x07,0x00,0xf8,0xff,0x1f,0x00,0x00,0xc0,0xff,0xff,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0xc0,0xff,0x03,0xf0,0xff,
- 0xff,0x01,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0x00,0x00,0xfc,
- 0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0x1f,0x00,0xfe,0x07,0x00,0x00,0x00,0x80,
- 0xff,0xff,0x07,0x00,0xf8,0xff,0x1f,0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0xe0,0xff,0x01,0xf0,0xff,0xff,0x01,0x00,
- 0x00,0xfe,0xff,0x0f,0x00,0x00,0x00,0xfe,0xff,0x00,0x00,0xf8,0xff,0x1f,0x00,
- 0x00,0x00,0xfe,0xff,0x0f,0x00,0xfe,0x0f,0x00,0x00,0x00,0x80,0xff,0xff,0x03,
- 0x00,0xf8,0xff,0x1f,0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0xf0,0xff,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,
- 0x0f,0x00,0x00,0x00,0xff,0xff,0x00,0x00,0xf8,0xff,0x1f,0x00,0x00,0x00,0xff,
- 0xff,0x0f,0x00,0xfe,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0x03,0x00,0xf8,0xff,
- 0x0f,0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0xf8,0x7f,0x00,0xe0,0xff,0xff,0x03,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,
- 0x00,0xff,0xff,0x00,0x00,0xf8,0xff,0x1f,0x00,0x00,0x00,0xff,0xff,0x07,0x00,
- 0xfc,0x1f,0x00,0x00,0x00,0x80,0xff,0xff,0x03,0x00,0xf8,0xff,0x0f,0x00,0x00,
- 0xe0,0xff,0x7f,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0xfc,0x3f,
- 0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0xfc,0xff,0x1f,0x00,0x00,0x80,0xff,0xff,
- 0x00,0x00,0xf0,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0x03,0x00,0xfc,0x3f,0x00,
- 0x00,0x00,0x80,0xff,0xff,0x01,0x00,0xf8,0xff,0x0f,0x00,0x00,0xe0,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0xfe,0x1f,0x00,0xc0,0xff,
- 0xff,0x0f,0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0x00,0x00,0xf0,
- 0xff,0x3f,0x00,0x00,0xc0,0xff,0xff,0x01,0x00,0xfc,0x7f,0x00,0x00,0x00,0x80,
- 0xff,0xff,0x01,0x00,0xfc,0xff,0x0f,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0xff,0x1f,0x00,0x80,0xff,0xff,0x0f,0x00,
- 0x00,0xf8,0xff,0x3f,0x00,0x00,0xc0,0xff,0x7f,0x00,0x00,0xe0,0xff,0x7f,0x00,
- 0x00,0xe0,0xff,0xff,0x01,0x00,0xfc,0xff,0x00,0x00,0x00,0xc0,0xff,0xff,0x00,
- 0x00,0xfc,0xff,0x0f,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x80,0xff,0x0f,0x00,0x80,0xff,0xff,0x1f,0x00,0x00,0xf0,0xff,
- 0x7f,0x00,0x00,0xe0,0xff,0x7f,0x00,0x00,0xe0,0xff,0xff,0x00,0x00,0xf0,0xff,
- 0xff,0x00,0x00,0xfc,0xff,0x03,0x00,0x00,0xe0,0xff,0xff,0x00,0x00,0xfc,0xff,
- 0x0f,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0xe0,0xff,0x07,0x00,0x00,0xff,0xff,0x3f,0x00,0x00,0xf0,0xff,0xff,0x00,0x00,
- 0xf0,0xff,0x7f,0x00,0x00,0xc0,0xff,0xff,0x01,0x00,0xf8,0xff,0x7f,0x00,0x00,
- 0xfc,0xff,0x07,0x00,0x00,0xf0,0xff,0x7f,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,
- 0xf0,0xff,0x7f,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0xf8,0xff,0x07,
- 0x00,0x00,0xff,0xff,0xff,0x00,0x00,0xe0,0xff,0xff,0x01,0x00,0xfc,0xff,0x7f,
- 0x00,0x00,0x80,0xff,0xff,0x03,0x00,0xfc,0xff,0x3f,0x00,0x00,0xf8,0xff,0x1f,
- 0x00,0x00,0xf8,0xff,0x3f,0x00,0x00,0xff,0xff,0x0f,0x00,0x00,0xf8,0xff,0x7f,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0xfe,0xff,0x0f,0x00,0x00,0xff,
- 0xff,0xff,0x03,0x00,0xc0,0xff,0xff,0x07,0x00,0xff,0xff,0x7f,0x00,0x00,0x00,
- 0xff,0xff,0x07,0x00,0xff,0xff,0x1f,0x00,0x00,0xf8,0xff,0xff,0x00,0x00,0xfe,
- 0xff,0x3f,0x00,0x80,0xff,0xff,0x1f,0x00,0x00,0xfc,0xff,0xff,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0xe0,0xff,0xff,0x7f,0x00,0xc0,0xff,0xff,0xff,0x1f,
- 0x00,0x80,0xff,0xff,0x1f,0xe0,0xff,0xff,0x7f,0x00,0x00,0x00,0xfe,0xff,0x3f,
- 0xe0,0xff,0xff,0x0f,0x00,0x00,0xf8,0xff,0xff,0x0f,0xc0,0xff,0xff,0x1f,0x00,
- 0xe0,0xff,0xff,0x7f,0x00,0x80,0xff,0xff,0xff,0x03,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0xf8,0xff,0xff,0xff,0x03,0xfc,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,
- 0x03,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x0f,0x00,0xff,0xff,0xff,
- 0xff,0x07,0xf8,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0xf8,
- 0xff,0xff,0xff,0x03,0xfe,0xff,0xff,0xff,0x7f,0x00,0x00,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x01,0x00,0x00,
- 0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0x03,0x00,0xff,0xff,0xff,0xff,0x07,0xf8,
- 0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0xf8,0xff,0xff,0xff,
- 0x03,0xfe,0xff,0xff,0xff,0x7f,0x00,0x00,0xfc,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0x00,0xf0,0xff,0xff,0xff,0xff,0x7f,0x00,0x00,0x00,0xf8,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x01,0x00,0xff,0xff,0xff,0xff,0x07,0xf8,0xff,0xff,0xff,
- 0x3f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0xf8,0xff,0xff,0xff,0x01,0xfe,0xff,
- 0xff,0xff,0x3f,0x00,0x00,0xf8,0xff,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,
- 0xe0,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xf0,0xdf,0xff,0xff,0xff,0xff,
- 0xff,0x00,0x00,0xff,0xff,0xff,0xff,0x07,0xfc,0xff,0xff,0xff,0x1f,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0xf8,0xff,0xff,0xff,0x01,0xfe,0xff,0xff,0xff,0x3f,
- 0x00,0x00,0xf0,0xff,0xff,0xff,0x7f,0xfe,0x3f,0x00,0x00,0x00,0x80,0xff,0xff,
- 0xff,0xff,0x0f,0x00,0x00,0x00,0xf0,0x1f,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,
- 0xff,0xff,0xff,0xff,0x07,0xfc,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0xfc,0xff,0xff,0xff,0x01,0xfe,0xff,0xff,0xff,0x3f,0x00,0x00,0xc0,
- 0xff,0xff,0xff,0x1f,0xfc,0x3f,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xff,0x03,
- 0x00,0x00,0x00,0xf0,0x0f,0xfc,0xff,0xff,0xff,0x0f,0x00,0x80,0xff,0xff,0xff,
- 0xff,0x03,0xfc,0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0xfc,
- 0xff,0xff,0xff,0x01,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xff,0xff,0xff,
- 0x07,0xfc,0x1f,0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x7f,0x00,0x00,0x00,0x00,
- 0xf0,0x0f,0xf0,0xff,0xff,0xff,0x01,0x00,0x80,0xff,0xff,0xff,0xff,0x03,0xfc,
- 0xff,0xff,0xff,0x1f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0xfc,0xff,0xff,0xff,
- 0x01,0xff,0xff,0xff,0xff,0x3f,0x00,0x00,0x00,0xf8,0xff,0xff,0x00,0xfc,0x1f,
- 0x00,0x00,0x00,0x00,0xc0,0xff,0xff,0x0f,0x00,0x00,0x00,0x00,0xf0,0x07,0x80,
- 0xff,0xff,0x3f,0x00,0x00,0x80,0xff,0xff,0xff,0xff,0x03,0xfc,0xff,0xff,0xff,
- 0x1f,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xfc,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x03,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x80,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,
- 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xff,0x81,0x01,0x0e,0x00,0x00,0x80,
- 0x1f,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x0e,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x70,0xc0,0x01,0x0e,0x00,0x00,0x70,0x0e,0x20,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x1c,0x00,0x00,0x00,0x00,0x20,0x00,0x04,
- 0x00,0x20,0x30,0xe0,0x00,0x06,0x00,0x00,0x08,0x0e,0x30,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x08,0x04,0x00,0x00,0x00,0x00,0x18,0x00,0x03,0x00,0x30,0x38,
- 0xe0,0x00,0x06,0x00,0x00,0x04,0x06,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x03,0x00,0x38,0x38,0xf0,0x00,0x07,
- 0x00,0x00,0x06,0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,
- 0x00,0x00,0x00,0x1c,0x80,0x03,0x00,0x38,0x38,0xf8,0x00,0x03,0x00,0x00,0x06,
- 0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x80,0x01,0xc0,0x03,
- 0x1c,0x80,0x03,0x00,0x38,0x38,0xe8,0x80,0x01,0x00,0x00,0x06,0x07,0x1c,0x80,
- 0x7f,0x80,0x0f,0xe0,0x03,0xf8,0x07,0x04,0x06,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0x00,0xe0,0x03,0xb8,0x07,0x0c,0x80,0x01,
- 0x00,0x38,0x38,0xe4,0x80,0x01,0x00,0x00,0x06,0x03,0x1c,0x60,0x38,0x40,0x04,
- 0x10,0x01,0x86,0x03,0x87,0x07,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x1c,0x00,0x10,0x03,0x04,0xc7,0xff,0xf9,0x3f,0x00,0x78,0x18,
- 0xe4,0xc0,0x00,0x00,0x00,0x8e,0x03,0x0c,0x30,0x18,0x20,0x00,0x08,0x00,0x83,
- 0xc1,0xe7,0x03,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x1c,0x00,0x1c,0x01,0x06,0x07,0x0e,0xc0,0x01,0x00,0x10,0x1c,0xe2,0x40,0x00,
- 0x00,0x00,0xc0,0xff,0x0f,0x18,0x18,0x30,0x00,0x0c,0x80,0x81,0x21,0x37,0x03,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x0c,
- 0x00,0x03,0x07,0x0e,0xc0,0x01,0x00,0x00,0x1c,0xe1,0x60,0x00,0x00,0x00,0x80,
- 0x03,0x0e,0x18,0x18,0x30,0x00,0x0c,0x80,0x81,0x01,0x8f,0x03,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x0e,0x00,0x03,0x07,
- 0x06,0xc0,0x00,0x00,0x00,0x9c,0xe1,0x30,0x00,0x00,0x00,0x80,0x01,0x0e,0x1c,
- 0x1c,0x70,0x00,0x1c,0xc0,0xc1,0x01,0x83,0x03,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x06,0x80,0x01,0x07,0x06,0xc0,0x00,
- 0x00,0x00,0x9c,0xe0,0x18,0x00,0x00,0x00,0xc0,0x01,0x06,0x0c,0x0c,0xf0,0x00,
- 0x3c,0xc0,0xc0,0x00,0x83,0x01,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0xe0,0x03,0x06,0x80,0x01,0x03,0x07,0xe0,0x00,0x00,0x00,0x5c,
- 0xe0,0x0c,0x00,0x00,0x00,0xc0,0x00,0x07,0x0c,0x0c,0xe0,0x01,0x78,0xc0,0xc0,
- 0x80,0x83,0x01,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xc0,0x03,0x07,0xc0,0x01,0x03,0x07,0xe0,0x00,0x00,0x00,0x6c,0xe0,0x0c,0x00,
- 0x00,0x00,0xc0,0x00,0x07,0x0c,0x0c,0xc0,0x03,0xf0,0xc0,0xc0,0x80,0x81,0x01,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x07,
- 0xc0,0x81,0x01,0x03,0x60,0x00,0x00,0x00,0x2c,0xe0,0x06,0x80,0x00,0x00,0x40,
- 0x00,0x07,0x0e,0x0e,0x80,0x03,0xe0,0xe0,0xe0,0x80,0xc1,0x01,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x07,0xc4,0x81,0x01,
- 0x83,0x60,0x10,0x00,0x00,0x1e,0xe0,0x03,0xc0,0x00,0x00,0x20,0x00,0x03,0x0e,
- 0xcf,0x04,0x03,0xc1,0xe0,0xf0,0xcc,0xc1,0x10,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x07,0xc3,0xc1,0x00,0x63,0x60,0x0c,
- 0x00,0x00,0x1e,0xe0,0x01,0xe0,0x01,0x00,0x20,0x80,0x03,0xce,0x6e,0x07,0xc1,
- 0x41,0xe0,0xec,0xc6,0xc1,0x0c,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x80,0x01,0x8f,0xc1,0x61,0x80,0x1f,0xf0,0x03,0x00,0x00,0x0e,
- 0xe0,0x01,0xe0,0x01,0x00,0x18,0x80,0x03,0x7e,0x1e,0x87,0xc0,0x21,0xe0,0xe7,
- 0xc1,0xc0,0x07,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
- 0x80,0x01,0x7f,0x80,0x23,0x00,0x0f,0xe0,0x01,0x00,0x00,0x06,0xe0,0x00,0xc0,
- 0x00,0xc0,0x0f,0x80,0x7f,0x1e,0x0f,0x47,0xc0,0x11,0xe0,0xf1,0xc0,0xe0,0x01,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x00,0x1e,
- 0x80,0x1f,0x00,0x03,0x60,0x00,0x00,0x00,0x02,0x20,0x00,0x40,0x00,0xe0,0x03,
- 0x80,0x07,0x0c,0x03,0x3e,0x80,0x0f,0xc0,0x30,0x60,0x40,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x40,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x3c,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x78,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x40,0x3f,0xbf,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3f,
- 0xbf,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0x3f,0x3f,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0x3f,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0x3f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0x3f};
- SHAR_EOF
- fi
- exit 0
- # End of shell archive
-